gpt4 book ai didi

ios - 核心数据 : Private context with child Main context - FetchedResultsController not getting updates

转载 作者:搜寻专家 更新时间:2023-11-01 06:22:21 24 4
gpt4 key购买 nike

我一直在尝试按照 Marcus Zarra 的描述构建核心数据堆栈,其中他有一个私有(private)队列上下文和一个主队列上下文(其中主队列上下文是私有(private)队列上下文的子上下文)。

我相信我已经在 Swift 中忠实地重建(here)他所描述的 MCPersistenceController(示例代码是 Obj-C)。

问题出在我的ListViewModel class (其中包含一个 NSFetchedResultsController)。无论我尝试什么,当插入新的 Item 对象时,它的委托(delegate)回调(controllerDidChangeContent 等)都不会被调用。

  • FRC 和 NSFetchRequest 使用主上下文;该项目被插入到主要上下文中; save function保存主上下文,然后将更改合并到私有(private)队列中

  • 如果我在插入和保存后对任一上下文执行手动 executeFetchRequest,我确实会取回新创建的 Item

  • 如果我监听 NSManagedObjectContextObjectsDidChangeNotification 通知,它们确实会在插入后触发。

  • 当我重新启动应用程序时,我插入的 Item 现在会显示。

我只能假设这是在错误的线程上做某事的问题并且没有报告错误,但无论我尝试了什么,当我插入一个新的 Item 时,FRC 都不会触发委托(delegate)回调。可能是我错过了一些 Swift 的东西。

在这一点上,我非常感谢任何建议。

我的简单概念验证项目 (Swift 1.2) 在 GitHub 上. (我还没有接触到 CloudKit 的东西……)。

最佳答案

您的 ListViewModel 对象是一个纯 Swift 对象。获取的结果 Controller 使用 NSObject-descended 功能来检查委托(delegate)是否响应委托(delegate)方法。

@objc
class ListViewModel: NSFetchedResultsControllerDelegate{

修复它。

关于ios - 核心数据 : Private context with child Main context - FetchedResultsController not getting updates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31722142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com