我有一个连接到NSFetchedResultsController的表视图:
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.database.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
我在背景上下文中创建实体,如下所示:
NSManagedObjectContext *backgroundContext;
backgroundContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
backgroundContext.parentContext = document.managedObjectContext;
[backgroundContext performBlock:^{
[MyAPI createEntitiesInContext:backgroundContext];
NSError *error = nil;
[backgroundContext save:&error];
if (error) NSLog(@"error: %@",error.localizedDescription);
[document.managedObjectContext performBlock:^{
[document updateChangeCount:UIDocumentChangeDone];
[document.managedObjectContext save:nil];
}];
现在,每当我获得新数据(以及上面显示的插入/更新实体)时,我的NSFetchedResultsController就不能正常工作了。特别是,我总是更新一个实体(不创建新实体),但我的表视图显示了两个实体。一旦我重新启动应用程序,它就会正确显示。
如果我在self.database.managedObjectContext中执行实体的创建([MyAPI createEntities]),一切正常。
我做错了什么?我已经坚持了几个小时了。