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{ 

修复它。