У меня есть приложение с несколькими представлениями таблиц, и я хочу использовать базовые данные для сбора всех данных. У меня есть две сущности - морозильные камеры и предметы. В первом табличном представлении я добавляю морозильник, и он сохраняется правильно. Я закрываю приложение, открываю заново, и оно там. Я нажимаю на морозильную камеру (открывая другой вид таблицы) и добавляю некоторые элементы, и я вижу их в моем новом секционном виде. Я закрываю свое приложение, перезагружаю его, вижу морозильник, нажимаю на него, и нет никаких предметов.
У меня есть свой managedObjectContext в моем appDelegate, и я ссылаюсь на него, используя все представления, поэтому я не создаю несколько экземпляров. Вот код, который я использую для сохранения элементов в морозильнике, как управляемогоObjectContext, так и моего itemsArray:
Item *item = (Item *)[NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:[delegate managedObjectContext]];
[item setFreezer:freezerName];
[item setName:name];
[item setQuantity:quantity];
[item setSection:section];
[item setAdded:added];
[item setNotes:notes];
NSError *error = nil;
if (![[delegate managedObjectContext] save:&error]) {
NSLog(@"Freezer info didn't save. Need to handle this.");
}
[items insertObject:item atIndex:0];
Вот код, который я использую в ItemViewController для извлечения элементов в viewDidLoad:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"freezer == '%@'", freezerName];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item" inManagedObjectContext:[delegate managedObjectContext]];
NSSortDescriptor *sorts = [[NSSortDescriptor alloc] initWithKey:@"section" ascending:NO];
NSArray *sort = [[NSArray alloc] initWithObjects:sorts, nil];
[request setSortDescriptors:sort];
[request setEntity:entity];
[request setPredicate:predicate];
NSError *error = nil;
NSMutableArray *results = [[[delegate managedObjectContext] executeFetchRequest:request error:&error] mutableCopy];
if(results == nil) {
NSLog(@"Error fetching results... need to handle");
}
[self setItems:results];
NSLog(@"items count:%d", [items count]);
Количество возвращенных предметов равно нулю.
Я совершенно ошарашен и потратил несколько часов на поиск в Интернете, пробуя разные вещи, и я не могу понять это. Я знаю, что есть более умные программисты, и я надеюсь, что один из вас поймет, в чем проблема.