如何使用NSPersistentCloudKitContainer启动并运行默认项目?

时间:2019-06-14 16:00:30

标签: ios cloudkit wwdc nspersistentcloudkitcontainer

我按照与“在CloudKit中使用核心数据”中的相同步骤进行操作:

  1. 新项目
  2. 启用核心数据+云工具包
  3. 添加iCloud / CloudKit权利+后台模式/远程通知权利。
  4. 在iPhone Xr模拟器中,我登录了一个我创建的iCloud帐户(然后在icloud.com上进行了验证!)并运行该应用程序,创建了多个条目。
  5. 然后我在iPhone Xs模拟器中登录了相同的iCloud帐户。我运行了该应用程序,但没有任何条目被合并。在此模拟器中创建条目也不会合并回到Xr模拟器中。

我想念什么?

2 个答案:

答案 0 :(得分:3)

要查看模拟器的更改,您必须退出应用程序,然后重新加载(或构建并运行)。

模拟器从未能够接收到远程通知来触发iCloud同步,因此您需要手动强制进行同步,但是我发现无法从Xcode 11 beta的菜单中手动触发同步(出现错误) 。

安德鲁·班克罗夫特(Andrew Bancroft)撰写了一篇不错的文章,介绍了其他一些事情,例如将 automaticallyMergesChangesFromParent 属性设置为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 Container

...就是这样!念念不忘。

我所有嵌套的多对多关系似乎都运行良好。

我仍然需要弄清楚如何同步当前在用户Documents目录中存储为JPG的图像,但是我怀疑它们需要作为BLOB存储在Core Data中,以便在后台转换为CKAsets。

答案 1 :(得分:0)

Apple现在有名为CoreDataCloudKitDemo的示例代码。 这包括所有基本内容,还包含其他代码,这些代码可以在其他设备收到更改后对其进行处理。 您需要先行

description.cloudKitContainerOptions =             NSPersistentCloudKitContainerOptions(                 containerIdentifier:“ iCloud.com.developerid.databasename”)

使您的本地数据库进入iCloud并创建架构。 您需要使用Web上的Cloudkit仪表板来查看架构等。