我在app中有一个应用程序,我正在进行轻量级迁移(添加新属性和新实体,而不是删除任何内容)。从广泛的研究中,我知道我需要为本地版本的数据模型添加一个新版本的当前核心数据模型。任何更新应用程序并且只使用本地数据的人都会自动迁移到。
但是,当我更新iCloud模式(从icloud.developer.apple.com)时,我找不到任何关于发生什么的信息。主要是,我担心的是那些使用较早版本的应用程序并正在使用iCloud的用户。当我在iCloud网站中更新模式时,该应用程序的旧版本的用户会丢失当前数据还是无法同步他们的数据,因为他们的本地模式将与iCloud one?不同。
另外,我使用一个NSPersistentCloudKitContainer来与CloudKit同步核心数据。
任何帮助都是非常感谢的,因为我不想搞乱任何人的数据!
发布于 2021-08-14 11:31:17
不,他们的数据仍然在iCloud上,他们可以继续使用你的应用程序。
当您的架构被部署到生产环境中时,您无法更改或删除记录类型,因此您的所有更改将仅在当前架构设置之外进行,并且不会影响尚未更新应用程序的用户。
我以前也有过类似的问题,我很担心更新我的应用模式,但是一切都进行得很顺利--用户没有问题,数据也没有丢失。
不要忘记从应用程序中初始化您的新方案,并在iCloud仪表板上部署对产品的更改。使用以下代码初始化AppDelegate时,您可以在NSPersistentCloudKitContainer中初始化您的方案:
let options = NSPersistentCloudKitContainerSchemaInitializationOptions()
try? container.initializeCloudKitSchema(options: options)在此之后,您可以注释掉这些行,直到下一次更新Core数据模型。
您可以通过单击iCloud ()检查所有更改是否上载到仪表板中--您将看到一个包含对将要部署的模型的所有更改的确认窗口。也可以在iCloud仪表板中直接更改您的方案,但这并不方便(除非您只需要添加一种记录类型)。
由于Schema中的更改不会影响现有用户,所以在提交应用程序供评审之前,我通常会将它们移到产品上,但是在完成了与新记录类型相关的所有测试之后,我不打算在那里进行任何更改。
https://stackoverflow.com/questions/68777137
复制相似问题