Core Data + CloudKit 不会在其他设备上自动刷新?

Posted

技术标签:

【中文标题】Core Data + CloudKit 不会在其他设备上自动刷新?【英文标题】:Core Data + CloudKit not refreshing on other device automatically? 【发布时间】:2019-11-14 15:59:51 【问题描述】:

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

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

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

编辑:

这是我获取记录的方式:

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

【问题讨论】:

【参考方案1】:

想通了!

我必须补充:

context.automaticallyMergesChangesFromParent = true

SceneDelegate中的scene()函数:

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/

【讨论】:

以上是关于Core Data + CloudKit 不会在其他设备上自动刷新?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Today Extension (iOS 8) 访问 Core Data/CloudKit

如何在 Swift 中将 Core Data 与 Cloudkit 和许多设备同步

Core Data 不会将属性更新保留到数据库

在 iOS 的 Intents 扩展中访问 Cloud kit/Core Data 条目

管理多个 Store cloudkit 容器

NSFetchedResultsController(Core Data)不提供正确的数据源表视图控制器