我在大约一年半前建立了一个应用程序,我要回来了。这是我削减Swift牙齿的项目,从那以后,无论是语言还是我的Swift能力,显然已经发生了很多变化。
昨天我第一次更新了我的单个CoreData模型,添加了一个可选的字符串属性。我做了文件生成位,并确保在检查器列中适当选择了新的数据模型。
在我的模拟器和测试设备上,我需要删除旧版本的应用程序才能安装新版本,否则我会崩溃。我认为这只是开发环境过程的一部分。 如何确保升级用户在从App Store进行简单更新时不必删除并重新安装?我认为Xcode / CoreData / Apple通过一些内部脚本或进程处理此问题对用户来说是不可见的,“它只是起作用。”但是我想在这里发布,以了解我是否需要做任何其他工作来确保用户从v1平滑过渡到v1.1。
正如我所提到的,我所做的只是一个可选的字符串列。我假设所有现有用户数据都将迁移到新架构,新字段为nil
。
这里的任何想法都会受到欢迎和赞赏。谢谢!
答案 0 :(得分:2)
如果您的应用在升级时在模拟器中崩溃,您的用户也会崩溃。
为避免这种情况,您需要确保按照以下步骤操作:
按此顺序执行这些步骤非常重要。如果在创建新模型之前添加属性或将其设置为当前版本,则会发生崩溃。
编辑:这仅在您启用轻量级迁移时才有效。这是如何执行此操作的代码段:
let options = [NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true]
do {
//coordinator is an NSPersistentStoreCoordinator
try coordinator!.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: url, options: options
} catch var error as NSError {
// handle error however you want here...
abort()
}
答案 1 :(得分:0)