无需多个数据模型版本即可完成迁移。华友世纪?

时间:2016-08-29 13:27:18

标签: ios swift core-data migration

我在核心数据的迁移中引用了一个很棒的教程Swift Core Data Tutorial

Tut表示核心数据中的迁移与多个版本的数据模型密切相关。

我正在尝试轻量级迁移,并弄清楚以下几点:

场景 - 我有一个数据模型,我尝试向实体添加一些新属性,我收到了错误 -

iOS版本 - 9.1 Swift版本 - 2.2

  

“用于打开商店的模型与以前的模型不兼容   创建商店“

然后 尝试通过添加代码来启用迁移而不创建任何新版本 -

let options = [ NSMigratePersistentStoresAutomaticallyOption : true, NSInferMappingModelAutomaticallyOption : true ]

try persistentStoreCoordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: URLPersistentStore, options: options)

然后我尝试类似地改变数据库,即向实体添加一个属性并欢呼!!它不会导致崩溃。即使我尝试访问特定实体以及属性,但成功完成了。

发生的事情是没有多个版本的迁移。

问题 - 那么,如果没有多个版本的数据模型,迁移是否可行?

示例代码链接 - https://www.dropbox.com/s/mnb2dzxn56ghuet/CoreDataSwift-NSFetchedResultsController-master-2.zip?dl=0

1 个答案:

答案 0 :(得分:1)

从iOS 9开始,Core Data会将数据模型复制到持久性存储中,如果需要轻量级迁移并请求,则将其用作起点。因此,即使旧的模型版本不可用,也可以进行轻量级迁移。这仅适用于SQLite持久性存储,仅适用于轻量级模型迁移。

这在2015年WWDC的What's New in Core Data session中有所描述。