NSFetchedResultsController委托方法不会触发mergeChangesFromContextDidSaveNotification

问题描述:

一直浏览类似这篇文章,但没有人回答我的问题。NSFetchedResultsController委托方法不会触发mergeChangesFromContextDidSaveNotification

像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的委托方法触发,也没有更新表视图。

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

UPDATE: 通知确实包含正确的上下文为object,其中包含了正确的项目,但userInfo哈希有什么也没有:

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

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

而最愚蠢的错误的奖去toooooo ... Christoph!

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

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