核心数据迁移:我是否需要为每个新添加的模型版本添加新的映射模型?

时间:2013-08-26 04:21:43

标签: iphone ios objective-c ipad core-data

在我的应用中进行一些结构更改时,我已经完成了几个版本的自定义Core Data迁移。 (因此创建了一个新的模型版本,以及一个带有自定义策略类的映射模型)。

现在,我想做一些更改。所以我创建了另一个模型版本。现在,我不确定是否需要为此更改创建另一个映射模型?如果我这样做,核心数据是否会根据用户版本找出合适的数据?

我还需要创建另一个自定义策略类,还是可以以某种方式将新逻辑添加到第一个?

最后,我是否需要添加任何用于从原始数据库直接迁移到当前数据库的逻辑?或者核心数据是否适合我,并首先迁移到中位数版本,然后在用户加载具有原始数据结构的应用程序版本时转移到当前版本?

谢谢!

2 个答案:

答案 0 :(得分:0)

根据您的型号更改,您可以使用“默认迁移过程”。致电addPersistentStoreWithType:configuration:URL:options:error:时,请使用标记NSMigratePersistentStoresAutomaticallyOption

另外,我确信遗憾的是,每次可能的迁移都需要一个映射模型。如果您有3个模型,则必须实现:1到3和2到3.核心数据不够智能,无法自动执行中间步骤:(

答案 1 :(得分:0)

我想你是否需要创建另一个映射模型的答案是......这取决于。请参阅Apple的文档(特别是关于轻量级迁移的评论):https://developer.apple.com/library/ios/documentation/cocoa/Conceptual/CoreDataVersioning/Articles/vmMigrationProcess.html#//apple_ref/doc/uid/TP40004399-CH6-SW1