2012-01-31 58 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

相关问题