2

我在使用 UIManagedDocument 保存实体时遇到问题。我有一个 NSFetchedResultsController 其上下文设置为 UIManagedDocuments 上下文。我的控制器设置了部分。用户向 UIManagedDocuments 上下文添加一个条目,我使用以下命令保存上下文:[context save:&error]; 并且我的 NSFetchedResultsController 正确更新。

如果我离开具有 NSFetchedResultsController 的视图,然后返回到视图,在该视图中创建一个具有相同 UIManagedDocuments 上下文的新 NSFetchedResultsController,当我调用时会收到错误消息: [fetchedResultsController performFetch:&error];

错误说:

CoreData:错误:(NSFetchedResultsController)索引处获取的对象有一个乱序部分名称'。对象必须按部分名称排序'

并且获取失败。

如果我在返回视图之前等待一段时间,我不会收到错误消息。我知道保存操作是在子上下文中完成的,然后将更改推送到父上下文中,我认为这与问题有关。有没有人有办法解决吗?

4

1 回答 1

2

根据 UIManagedDocument 参考,您不应该通过 NSManagedObjectContext 保存。应通过适当的 UIManagedDocument API 进行保存。不幸的是,该文档并不清楚您应该使用什么。

如果您使用撤消管理器,则该路径应该确保所有内容都被适当地标记为脏并保存。同样,使用显式调用

[document updateChangeCount:UIDocumentChangeDone];

应该提供类似的功能。但是,保存将被推迟,因为它是在单独的线程中完成的。

于 2012-04-10T16:59:46.427 回答