首页 > 解决方案 > Core Data + CloudKit 不会在其他设备上自动刷新?

问题描述

我的 SwiftUI 应用程序与 Core Data + CloudKit 一起使用。我可以从我的 Mac 或 iPhone 将新条目保存到数据库中。该应用程序对所有设备使用完全相同的项目/代码库。

唯一的问题是我需要关闭应用程序并重新打开它以查看从其他设备生成的任何新条目。我可以立即看到来自同一设备的新条目,但它们不会出现在其他设备上,直到我关闭并重新打开其上的应用程序。

我在这里错过了什么吗?我是否需要在我的 Entity 类中添加诸如 ObservableObject 或 Identifiable 之类的东西?我该如何纠正这个问题?

编辑:

以下是我获取记录的方式:

@FetchRequest(
    entity: Doc.entity(),
    sortDescriptors: [NSSortDescriptor(key: "title", ascending: true)]
) var docs: FetchedResults<Doc>

标签: iosswiftcore-dataswiftuicloudkit

解决方案


弄清楚了!

我不得不补充:

context.automaticallyMergesChangesFromParent = true

scene()函数中SceneDelegate

let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
context.automaticallyMergesChangesFromParent = true

现在它的工作完美无缺。

信用:https ://www.andrewcbancroft.com/blog/ios-development/data-persistence/getting-started-with-nspersistentcloudkitcontainer/


推荐阅读