Cloudkit 中的即时模式

Posted

技术标签:

【中文标题】Cloudkit 中的即时模式【英文标题】:Just in time schema in Cloudkit 【发布时间】:2018-01-12 11:27:18 【问题描述】:

我想为我的应用程序使用 cloudkit 的私有数据库,所以在设计时我正在寻找可以轻松地将我的模型类映射到 cloudkit 的东西,而无需任何额外的努力。

所以我在写它的apple document 中发现了一些有趣的东西,

在开发过程中,使用 CloudKit API 创建模式很容易。 将记录对象保存到数据库时,关联的记录 类型及其字段会自动为您创建。此功能 称为即时模式,仅当您使用 上销售的应用程序无法访问的开发环境 店铺。例如,在开发过程中,您可以填充 CloudKit 具有存储在属性列表中的测试记录的数据库。

但我无法完全理解相同的概念或找不到任何可靠的教程来实现这一点。

【问题讨论】:

【参考方案1】:

在开发环境中,您有两个用于定义数据库模式的选项。首先,您可以使用 Web 门户并手动创建新的记录类型(随时添加字段类型)。或者,您可以使用“及时”路线,这意味着您只需在代码中创建新记录,添加所需字段,然后保存记录。在开发环境中,这会自动将记录类型添加到架构中,并将您提供的数据保存在新记录中。

不过,这在生产环境中不起作用。您无法在 prod 环境中创建新架构。 Web 门户将不允许您手动创建新的记录类型。如果您尝试创建新记录(或向现有记录添加新字段)并将其保存在 prod 环境中,您将收到错误消息。

在 prod 环境中添加新记录类型(或向现有记录类型添加新字段)的唯一方法是首先在 dev 环境中创建所需的更改,然后将更改从 dev 环境发布到prod 环境。

简而言之,开发环境架构具有可塑性,只需创建新记录并保存即可对其进行修改。 prod 环境 schema 是固定的,只能通过修改 dev env 然后将更改发布到 prod 来更改。

【讨论】:

'通过以编程方式保存记录来创建模式'​​,这意味着如果我不从仪表板手动创建模式,那么在创建第一条记录时,如果自定义类型不可用,它将创建新模式直接对我来说,这是及时模式吗?或者我误解了什么。 ? 没错。与 prod 环境相反,尝试保存新的记录类型或归档类型将引发错误。 酷.. 然后我将按照您提到的方式将其从开发环境发布到生产环境。谢谢

以上是关于Cloudkit 中的即时模式的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序处于后台模式时,如何获得错过的 CloudKit 通知?

CloudKit:iCloud 模式计划部署(使用 Seam3)

Cloudkit 与组合

cloudKit:公共数据库中的 CKFetchRecordChangesOperation

CloudKit App 处理不同的 iCloud 帐户

CloudKit 订阅不能在代码中创建吗?