2010-10-21 80 views
6

一直瀏覽類似這篇文章,但沒有人回答我的問題。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)}"; 
} 

所以看起來通知未有任何變化,儘管有更改的項目正確的上下文....嗯。

回答

1

而最愚蠢的錯誤的獎去toooooo ... Christoph!

通知沒有顯示任何內容的原因是我忘記在調用設置通知的代表然後再次保存之前在單獨的MOC上取出保存。

由於MOC剛剛保存,第二次保存沒有更改,因此通知保持空白。正如我早先應該做的那樣,取消第一次保存,確實解決了問題。

相關問題