Я использую NSFetchedResultsController для отображения кучи объектов, которые секционируются с использованием дат. При новой установке все работает отлично, и объекты отображаются в виде таблицы. Однако, похоже, что когда приложение перезагружается, я получаю сбой. Я указываю кеш при инициализации NSFetchedResultsController, и когда я этого не делаю, он отлично работает.
Вот как я создаю свой NSFetchedResultsController:
- (NSFetchedResultsController *)results {
// If we are not nil, stop here
if (results != nil)
return results;
// Create the fetch request, entity and sort descriptors
NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:self.managedObjectContext];
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"utc_start" ascending:YES];
NSArray *descriptors = [[NSArray alloc] initWithObjects:descriptor, nil];
// Set properties on the fetch
[fetch setEntity:entity];
[fetch setSortDescriptors:descriptors];
// Create a fresh fetched results controller
NSFetchedResultsController *fetched = [[NSFetchedResultsController alloc] initWithFetchRequest:fetch managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"day" cacheName:@"Events"];
fetched.delegate = self;
self.results = fetched;
// Release objects and return our controller
[fetched release];
[fetch release];
[descriptor release];
[descriptors release];
return results;
}
Это сообщения, которые я получаю при сбое приложения:
FATAL ERROR: The persistent cache of section information does not match the current configuration. You have illegally mutated the NSFetchedResultsController fetch request, its predicate, or its sort descriptor without either disabling caching or using +deleteCacheWithName:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'FATAL ERROR: The persistent cache of section information does not match the current configuration. You have illegally mutated the NSFetchedResultsController fetch request, its predicate, or its sort descriptor without either disabling caching or using +deleteCacheWithName:'
Я действительно не знаю, почему это говорит, что, поскольку я не верю, что делаю что-то особенное, что может вызвать это. Единственная потенциальная проблема - заголовок раздела (день), который я создаю, как это, создавая новый объект:
// Set the new format
[formatter setDateFormat:@"dd MMMM"];
// Set the day of the event
[event setValue:[formatter stringFromDate:[event valueForKey:@"utc_start"]] forKey:@"day"];
Как я уже упоминал, все это прекрасно работает, если нет кеша. Любая помощь ценится!