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