Я разрабатываю приложение для iPhone, в котором я использую NSFetchedResultsController в главном контроллере табличного представления.Я создаю его следующим образом в viewDidload основного контроллера табличного представления:
NSSortDescriptor *sortDescriptorDate = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:YES];
NSSortDescriptor *sortDescriptorTime = [[NSSortDescriptor alloc] initWithKey:@"start" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptorDate,sortDescriptorTime, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptorDate release];
[sortDescriptorTime release];
[sortDescriptors release];
controller = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:context
sectionNameKeyPath:@"date"
cacheName:nil];
[fetchRequest release];
NSError *error;
BOOL success = [controller performFetch:&error];
Затем в следующем представлении я создаю новый объект в контексте:
TestObject *testObject = [NSEntityDescription insertNewObjectForEntityForName:@"TestObject" inManagedObjectContext:context];
TestObject имеет несколько связанных объектов, которые я создаю таким же образом и добавляю в testObject, используя предоставленные методы add ... Objects.
Затем, если перед сохранением контекста я нажимаю отмену и возвращаюсь к главномуВ табличном представлении ничего не отображается, как ожидалось.Однако, если я перезапущу приложение, объект, который я создал в контексте, отобразится в главном табличном представлении.Как так?Сначала я думал, что это потому, что NSFetchedResultsController считывал данные из кеша, но, как вы можете видеть, я установил значение nil только для проверки.Кроме того, [context hasChanges] возвращает true после перезапуска.Что мне здесь не хватает?