我有一个连接到 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]),一切正常。
我究竟做错了什么?我已经坚持了几个小时了。