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