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

时间:2010-10-21 04:51:20

标签: 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");
}

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

我没有尝试缓存或清除它。我在tableView上尝试了reloadData,但没有。 当我退出应用程序并重新启动时,它显示正常。

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

userInfo = {
  inserted = "{(\n)}";
  updated = "{(\n)}";
}

所以看起来通知中没有任何变化,尽管与更改的项目有正确的上下文....嗯。

1 个答案:

答案 0 :(得分:1)

最愚蠢的错误奖励太多了... Christoph !!

通知没有显示任何内容的原因是我忘记在单独的MOC上取消保存,然后再致电设置通知的代表然后再次保存。

由于MOC刚刚保存,第二次保存没有变化,因此通知保持空白。删除第一个保存,就像我之前应该做的那样,确实解决了这个问题。