У меня был такой же сбой.Следуя совету Роба, я дополнительно отправлял NSNotification каждый раз, когда вызывал removePersistentStore:
- и все мои ViewController, имеющие NSFetchedResultController, теперь автоматически обнуляют свой локальный NSFetchedResultsController, когда это происходит.
, то есть:
1- СЛУШАТЬ УВЕДОМЛЕНИЕ:
-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
// Custom initialization
[[NSNotificationCenter defaultCenter] addObserverForName:kNotificationDestroyAllNSFetchedResultsControllers object:nil queue:nil usingBlock:^(NSNotification *note) {
NSLog(@"[%@] must destroy my nsfetchedresultscontroller", [self class]);
[__fetchedResultsController release];
__fetchedResultsController = nil;
}];
}
return self;
}
2 - УВЕДОМЛЕНИЕ ПОЧТА
for( NSPersistentStore* store in [self.persistentStoreCoordinator persistentStores] )
{
NSError *error;
NSURL *storeURL = store.URL;
[self.persistentStoreCoordinator removePersistentStore:store error:&error];
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];
/** ... side effect: all NSFetchedResultsController's will now explode */
[[NSNotificationCenter defaultCenter] postNotificationName:kNotificationDestroyAllNSFetchedResultsControllers object:self];
}