将新的核心数据模式发布到 iCloud 生产

Releasing new Core Data Schema to iCloud production

我在 App Store 中有一个应用程序,我正在进行轻量级迁移(添加新属性和新实体,不删除任何内容)。通过广泛的研究,我知道我需要为本地版本的数据模型添加当前核心数据模型的新版本。任何更新其应用程序且仅使用本地数据的人都将自动迁移过来。

但是,我找不到任何有关更新 iCloud 架构时发生的情况的信息(来自 icloud.developer.apple.com)。主要是,我担心使用旧版本应用程序并使用 iCloud 的用户。 当我更新 iCloud 网站中的架构时,使用旧版应用的用户是否会丢失他们的当前数据或无法同步他们的数据,因为他们的本地架构与 iCloud 的架构不同?

此外,我正在使用 NSPersistentCloudKitContainer 将核心数据与 CloudKit 同步。

非常感谢任何帮助,因为我不想弄乱任何人的数据!

不,他们的数据仍在 iCloud 上,他们可以继续使用您的应用程序。

当您的 Schema 部署到生产环境时,您无法更改 Records 类型或删除它们,因此您的所有更改只会在当前 Schema 设置之外完成,不会影响用户,这些用户还没有尚未更新应用程序。

我之前有过类似的问题,并且非常担心更新我的应用架构,但一切顺利 - 用户没有问题,也没有数据丢失。

不要忘记从应用程序初始化您的新方案并将更改部署到 Production on iCloud 仪表板上。 当您使用以下代码初始化 NSPersistentCloudKitContainer 时,您可以在 AppDelegate 中初始化您的方案:

let options = NSPersistentCloudKitContainerSchemaInitializationOptions()
try? container.initializeCloudKitSchema(options: options)

之后您可以注释掉这些行,直到下一次更新 Core Data 模型。

您可以通过单击 部署架构更改 来检查所有更改是否已上传到 iCloud 仪表板中 - 您将看到一条确认信息 window,其中包含对将部署的模型。 也可以直接在 iCloud 仪表板中更改您的 Scheme,但不太方便(除非您只需要添加一种记录类型)。

由于架构中的更改不会影响现有用户,我通常会在提交应用程序以供审核之前将它们移至生产环境,但在完成与新记录类型相关的所有测试之后,我不打算在那里进行任何更改.