核心数据iOS10:viewContext未通过NSFetchResultController从newBackgroundContext()接收更新

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

当我选择一个单元格时,我将Core Data对象传递给一个新的ViewController.这个新的VC仍然使用viewContext.
从这个ViewController,我可以从ModControlers中更新Core Data对象.为此,我使用newBackgroundContext()作为模态ViewController.我可以保存更新Core Data对象没有任何问题.

问题是FRC没有使用后台上下文中的更新Core Data对象自动更新.
就好像viewContext没有被接收和处理Core Data对象的更新.

如果我为viewContext(app wide)自动设置MergesChangesFromParent为true,当我保存背景上下文时,FRC将获取更新的Core Data对象.从我的理解来看,viewContext应该自动管理数据的合并.该文档描述了viewContext与:“这个上下文被配置为代数,并自动消耗来自其他上下文的保存通知.

你能澄清一下如何使用NSFetchResultController处理不同的上下文?

谢谢,
阿克塞尔

解决方法

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

我同意文件在这一点上令人困惑,“…并自动消耗来自其他上下文的保存通知”.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...