2012-01-31 53 views
2

我遇到了使用UIManagedDocument保存實體的問題。我有一個NSFetchedResultsController,其上下文被設置爲UIManagedDocuments上下文。我有控制器設置部分。用戶將條目添加到UIManagedDocuments上下文中,並使用以下命令保存上下文: [context save:& error]; 和我的NSFetchedResultsController正確更新。UIManagedDocument和NSFetchedResultsController

如果我離開這個NSFetchedResultsController,然後返回到視圖,我在其中創建一個新的NSFetchedResultsController具有相同UIManagedDocuments背景下來看,我得到一個錯誤回來時,我呼籲: [fetchedResultsController performFetch:&錯誤] ;

誤差表示:

CoreData:錯誤:(NSFetchedResultsController)在索引取出的對象具有一個無序節名的」。對象必須按節名「

排序,並且提取失敗。

如果我等一會兒纔回到視圖,我不會收到錯誤消息。我知道保存操作是在子上下文中完成的,然後將更改推送到父上下文,我認爲這與問題有關。有沒有人有辦法解決嗎?

回答

2

根據UIManagedDocument參考,您不應該通過NSManagedObjectContext保存。保存應該通過適當的UIManagedDocument API完成。不幸的是,該文件不完全清楚你應該使用什麼。

如果您使用撤消管理器,該路徑應該確保所有內容都被正確標記爲髒,並保存。同樣,使用明確的電話

[document updateChangeCount:UIDocumentChangeDone]; 

應該提供類似的功能。但是,保存將被推遲,因爲它是在單獨的線程中完成的。

+0

非常感謝你,我有完全相同的問題,並使用[document.managedObjectContext保存:]是問題。刪除保存,一切都完美了。 – Alfonso 2012-04-13 08:38:47

相關問題