要使用模拟器查看更改,您必须退出应用程序,然后重新加载(或构建并运行)。
模拟器永远无法接收远程通知来触发 iCloud 同步,因此您需要手动强制同步,但我发现无法从我的 Xcode 11 beta 中的菜单手动触发同步(给出错误)。
Andrew Bancroft 有一篇关于其他一些事情的好帖子,例如将automaticMergesChangesFromParent属性设置为 true,但这在使用 Simulators 时没有任何区别(编辑:确实如此,但我没有意识到,因为我只是在构建 &每次运行)。
安德鲁的帖子:https ://www.andrewcbancroft.com/blog/ios-development/data-persistence/getting-started-with-nspersistentcloudkitcontainer/#where-s-my-data
我在同一条船上,因为我负担不起安装任何 beta 软件(Xcode 除外),所以我将不得不坚持使用模拟器。但是我将现有应用程序转换为 CloudKit 的经验非常非常积极。我只需要对现有项目做三件事:
- 添加后台通知和 CloudKit 功能
- 确保所有核心数据属性和关系都是可选的(如果为零,则具有默认值)
- 将 NSPersistentContainer 重命名为 NSPersistent CloudKit容器
……就是这样!脑洞大开。
我所有嵌套的多对多关系似乎都运行良好。
我仍然需要弄清楚如何在用户文档目录中同步当前存储为 JPG 的图像,但我怀疑它们需要作为 BLOB 存储在 Core Data 中,以便在后台转换为 CKAsset。