在mergeChangesFromContextDidSaveNotification之后未触发的NSFetchedResultsController委托方法

Chr*_*oph 6 iphone core-data nsfetchedresultscontroller

正在浏览与此类似的帖子,但没有人回答我的问题.

与CoreDataBooks一样,我使用单独的MOC来添加和编辑项目并观察正确的通知,如下所示:

- (void)addControllerContextDidSave:(NSNotification*)saveNotification {

  NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
  // Merging changes causes the fetched results controller to update its results
  [context mergeChangesFromContextDidSaveNotification:saveNotification];
  NSLog(@"merging changes in rootview");
}
Run Code Online (Sandbox Code Playgroud)

当我进行保存时,它被正确观察到了.调试通知显示正确的上下文,调试上下文显示刚添加的项目.日志消息也打印得很好.但没有任何反应.NSFetchedResultsController的委托方法都没有触发,也没有更新表视图.

我没有尝试缓存或清除它.我试过reloadDatatableView,但没有.当我退出应用程序并重新启动时,它显示正常.

更新:通知确实包含正确的上下文object,其中包含正确的项目,但userInfo哈希中没有任何内容:

userInfo = {
  inserted = "{(\n)}";
  updated = "{(\n)}";
}
Run Code Online (Sandbox Code Playgroud)

因此,看起来通知中没有任何更改,尽管具有更改项目的正确上下文....嗯.

Chr*_*oph 1

最愚蠢错误奖也太……克里斯托夫!!

通知没有显示任何内容的原因是我忘记在调用设置通知的委托然后再次保存之前在单独的 MOC 上进行保存。

由于 MOC 刚刚保存,第二次保存没有更改,因此通知保持为空。删除第一个保存,正如我应该更早做的那样,确实解决了问题。