在我的应用程序中,我有一个NSFetchedResultsController可以在UITableView中加载Core Data对象。
与此FRC关联的提取请求使用可用于viewContext(iOS10)的新NSPersistentContainer属性。

当我选择一个单元格时,我将Core Data对象传递给一个新的ViewController。此新的VC仍使用viewContext。
通过此ViewController,我可以从以模态显示的ViewControllers中更新Core Data对象。为此,我将newBackgroundContext()用于模式ViewController。我可以保存更新的核心数据对象,而不会出现任何问题。

问题在于,FRC不会自动通过后台上下文中的更新核心数据对象进行更新。
好像viewContext没有接收并处理Core Data对象更新。

如果我为viewContext(应用程序范围)将automaticallyMergesChangesFromParent设置为true,则保存背景上下文时,FRC将获取更新的Core Data对象。据我了解,viewContext应该自动管理数据合并。该文档通过以下方式描述viewContext:“此上下文配置为世代的,并自动使用来自其他上下文的保存通知。”

您能否阐明如何使用NSFetchedResultsController处理不同的上下文?

最佳答案

您看到的是正确的行为。如果希望viewContext自动从其他上下文(包括newBackgroundContext()创建的上下文)中获取更改,则必须将automaticallyMergesChangesFromParent设置为true

我同意文档在这一点上令人困惑,“...并自动使用其他上下文中的保存通知。”

关于ios - 核心数据viewContext无法使用NSFetchedResultsController从newBackgroundContext()接收更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39348729/

10-11 19:55