CoreData:具有子主上下文的私有上下文 – FetchedResultsController未获取更新
我一直在尝试构建一个核心数据堆栈,如Marcus Zarra所描述的那样,他有一个私有队列上下文和一个主队列上下文(其中主队列上下文是私有队列上下文的子级)。
我相信我已经在Swift中正确地重建了( 这里 )他描述的MCPersistenceController
(示例代码是Obj-C)。
问题出在我的ListViewModel类 (包含NSFetchedResultsController
)中。 无论我尝试什么,插入新的Item
对象时都不会调用它的委托回调( controllerDidChangeContent
等)。
-
FRC和NSFetchRequest使用主上下文; 该项目插入主要上下文; save函数保存Main Context,然后将更改合并到Private Queue中
-
如果我在插入和保存后在任一上下文中执行手动
executeFetchRequest
,我会返回新创建的Item
。 -
如果我监听
NSManagedObjectContextObjectsDidChangeNotification
通知,它们确实在插入后触发。 -
当我重新启动应用程序时,现在显示我插入的
Item
。
我只能假设在错误的线程上做某事并且没有报告错误是一个问题,但无论我尝试过什么,当我插入一个新Item
,FRC不会触发任何委托回调。 可能是我错过了一些Swift的东西。
在这一点上,我真的很感激任何建议😏。
我的简单的概念validation项目(Swift 1.2)在GitHub上 。 (我还没有得到CloudKit的东西……)。
ListViewModel
对象是纯Swift对象。 获取的结果控制器使用NSObject后代function来检查委托是否响应委托方法。
@objc class ListViewModel: NSFetchedResultsControllerDelegate{
修复它。