- Je faire usage de NSFetchedResultsController pour afficher un ensemble d'objets, qui sont sectionnés à l'aide de dates. Sur une nouvelle installation, tout fonctionne parfaitement et les objets sont affichés dans la vue de table. Cependant, il semble que lorsque l'application est redémarrée, je reçois un crash. - Je spécifier un cache lors de l'initialisation de la NSFetchedResultsController, et quand je n'en ai pas, il fonctionne parfaitement.
Voici comment j'ai créer mon 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;
}
Ce sont les messages que je reçois quand l'application se bloque:
FATAL ERROR: The persistent cache of section information does not match the current configuration. You have illegally mutated the NSFetchedResultsController's 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's fetch request, its predicate, or its sort descriptor without either disabling caching or using +deleteCacheWithName:'
Je n'ai vraiment pas la moindre idée de pourquoi c'est à dire, que je ne crois pas que je suis en train de faire quelque chose de spécial qui serait à l'origine. Le seul problème potentiel est la section de l'en-tête (jour), que j'construire comme cela lors de la création d'un nouvel objet:
// Set the new format
[formatter setDateFormat:@"dd MMMM"];
// Set the day of the event
[event setValue:[formatter stringFromDate:[event valueForKey:@"utc_start"]] forKey:@"day"];
Comme je l'ai mentionné, tout cela fonctionne très bien si il n'y a pas de cache en cause. Toute aide appréciée!