Zac*_*iro 1 xcode core-data core-data-migration swift swift3
大约一年半前,我构建了一个应用程序,我将再次使用它。这是我开始学习 Swift 的项目,很明显,从那时起,语言和我的 Swift 能力都发生了很大变化。
昨天,我第一次更新了我的单个 CoreData 模型以添加一个可选的字符串属性。我做了文件生成位并确保在检查器列中正确选择了新的数据模型。
在我的模拟器和测试设备上,我需要删除旧版本的应用程序才能安装新版本,否则我会崩溃。我认为这只是开发环境过程的一部分。如何确保升级用户在从 App Store 进行简单更新时不必删除和重新安装?我假设 Xcode/CoreData/Apple 已经通过一些用户不可见的内部脚本或进程来处理这个问题,“它只是有效。” 但我想在此处发布此内容,以了解是否需要做任何其他事情来确保用户从 v1 平滑过渡到 v1.1。
正如我所提到的,我所做的只是一个可选的字符串列。我假设所有现有的用户数据都将迁移到新模式,新字段为nil.
这里的任何想法都将受到欢迎和赞赏。谢谢!
如果您的应用程序在升级时在模拟器中崩溃,您的用户也会崩溃。
为避免这种情况,您需要确保遵循以下步骤:
按此顺序执行这些步骤很重要。如果在创建新模型或将其设为当前版本之前添加属性,则会发生崩溃。
编辑:这仅在您启用轻量级迁移时才有效。这是如何执行此操作的代码片段:
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()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1414 次 |
| 最近记录: |