То, что я пытаюсь сделать, довольно просто.Получение записи с использованием даты из данных ядра
- Я сохраняю запись в таблице Core-Data.
- Сохранение даты записи в качестве временного интервала в пользовательских значениях по умолчанию.
- Пытается восстановить запись снова с помощью преобразования Interval i.e в Date.
Однако каждый раз, когда я получаю пустой массив. FYI Я также проверяю, действительно ли запись была сохранена или нет, и даже если она сохранила результат, будет пуст.
метода, чтобы сохранить записи и хранение Дату интервального
RequestInfo * newEntry = [NSEntityDescription insertNewObjectForEntityForName:@"RequestInfo"inManagedObjectContext:self.managedObjectContext];
newEntry.jukeboxPhoneNo = request.L;
newEntry.trackName = request.TN;
newEntry.trackNo = request.T;
newEntry.date = [NSDate date];
NSTimeInterval lastID = [newEntry.date timeIntervalSince1970];
NSUserDefaults* prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:[NSString stringWithFormat:@"%f", lastID] forKey:LAST_REQUEST_ID_KEY];
[prefs synchronize];
if (![self.managedObjectContext save:&error]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
else {
NSLog(@"Object is saved");
}
метод для Retrive ЗАПИСИ
NSUserDefaults* prefs = [NSUserDefaults standardUserDefaults];
NSString* lastDateInterval = (NSString*)[prefs objectForKey:LAST_REQUEST_ID_KEY];
NSTimeInterval lastID = [lastDateInterval doubleValue];
NSLog(@"Last ID %f", lastID);
// Check it
if(lastID!=0) {
NSDate* soughtDate =[[NSDate alloc] initWithTimeIntervalSince1970:lastID];
NSEntityDescription *productEntity=[NSEntityDescription entityForName:@"RequestInfo" inManagedObjectContext:self.managedObjectContext];
NSFetchRequest *fetch=[[NSFetchRequest alloc] init];
[fetch setEntity:productEntity];
NSPredicate *p= [NSPredicate predicateWithFormat:@"(date >=%@) AND (date <= %@)", soughtDate, soughtDate];
[fetch setPredicate:p];
NSError *fetchError;
NSArray *fetchedProducts = [self.managedObjectContext executeFetchRequest:fetch error:&fetchError];
RequestInfo* request = [fetchedProducts objectAtIndex:0];
Я попытался == в предикате, но это не сработало. Он возвращает мне пустой массив каждый раз. Я начал программировать в объективе-c довольно недавно, поэтому я тоже мог совершить глупую ошибку.
Почему временной интервал и строка? – Wain