【发布时间】:2011-08-11 05:38:35
【问题描述】:
我有已发布应用的旧版核心数据模型。现在,在应用程序的下一个版本中,我将核心数据模型迁移到新模型。有没有办法在实际迁移到模型的新版本之前从旧模型中获取属性值,或者有可能知道是否要进行迁移。
【问题讨论】:
标签: iphone core-data core-data-migration
我有已发布应用的旧版核心数据模型。现在,在应用程序的下一个版本中,我将核心数据模型迁移到新模型。有没有办法在实际迁移到模型的新版本之前从旧模型中获取属性值,或者有可能知道是否要进行迁移。
【问题讨论】:
标签: iphone core-data core-data-migration
当您迁移时,Core Data 实际上会为您移动现有值。如果您正在进行相对简单的迁移,例如添加或删除某些属性,Core Data 会尽最大努力使迁移尽可能无缝。在许多情况下,除了设置新模型之外,您无需进行任何更改。请参阅my answer here 了解更多信息。
【讨论】:
是的,有可能。
要从旧模型中获取属性值,您需要创建自定义实体迁移策略(NSEntityMigrationPolicy 子类)。然后在-createDestinationInstancesForSourceInstance:entityMapping:manager:error: 你会收到源实例,如何从源实例创建目标实例完全取决于你。
有一种方法可以检查给定商店是否与商店协调器模型兼容:-[NSManagedObjectModel isConfiguration:compatibleWithStoreMetadata:]。
【讨论】: