ios - Core Data + CloudKit 无法在其他设备上自动刷新?

标签 ios swift core-data swiftui cloudkit

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

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

我在这里遗漏了什么吗?我是否需要向我的实体类添加 ObservableObject 或 Identificable 之类的内容?我该如何纠正这个问题?

编辑:

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

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

最佳答案

明白了!

我必须添加:

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/

关于ios - Core Data + CloudKit 无法在其他设备上自动刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58860967/

相关文章:

xcode - Swift 2 中的 do-try-catch 用法

objective-c - 如何在 Xcode 8 中使用 CoreData?

core-data - 从 CoreData 迁移到 Realm

ios - 为什么在通过 javascript 设置列宽和间距后 UIWebView 不重排文本?

ios - 如何从 ViewController 中找到 navigationController 的标识符?

swift - 如何使 SwiftUI UIViewRepresentable View 包含其内容?

ios - CoreData 并发(用于与 CloudKit 同步)

ios - UISegmentedControl 在 UITableView 标题上的行为方式很奇怪

ios - 想要将一些代码应用到同一个 Storyboard 上的第二个场景(Xcode、Swift 2)

swift - SpriteBuilder Swift 代码连接零引用和释放问题