1

我有一个设置,在后台线程中,我将新对象保存在 managedObjectContext A 中,在 TableViewController 中,我收听NSManagedObjectContextDidSaveNotification并处理这样的通知:

- (void) refreshData:(NSNotification *)notif {
   assert([[self fetchedResultsController] managedObjectContext] == self.managedObjectContext);
   if ([notif object] != self.managedObjectContext) {
       [self.managedObjectContext mergeChangesFromContextDidSaveNotification:notif];
   }
}

self.managedObjectContext是 MOC B,连接到与 MOC A 相同的 NSPersistentStoreCoordinator(线程限制模式 1)。

TableViewController 是NSFetchedResultsController从 MOC B 读取数据的委托。

我找到了委托方法controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:,并且controllerDidChangeContent:在收到 MOC A 的通知后没有被调用。

我是否必须重新获取 MOC B 的 fetchedResultsController 中的数据才能看到 MOC A 中添加的新对象?

4

1 回答 1

1

开发者,

当然,您已经设置了获取结果控制器委托?不这样做,什么都不能被调用。

安德鲁

于 2013-02-07T12:40:14.567 回答