识别数据模型版本控制并执行某些操作


当用户

使用较新的模型版本升级到较新版本时,我想远程处理所有实体。例如

应用程序版本 1.0 和模型版本 1表 X表 Y

升级到应用程序版本1.1和模型版本2时,我添加了两个表表 H表 K

应删除表 X 和 Y。

如何识别当前数据模型版本并执行这些删除操作?

您可以使用

自定义迁移策略和映射模型进行迁移。

  1. 您有一个包含表 A 的模型版本 1.0 和包含表 B 的版本 1.1,但没有表 A
  2. 创建从版本 1.0 作为源到 1.1 作为目标的映射模型。
  3. 您可以创建一个新文件,即 NSEntityMigrationPolicy 的子类,但如果您不打算在代码中进行一些棘手的转换,则不必实现任何方法。
  4. 在映射模型中,您具有实体映射,并将表 A 设置为源,将表 B 设置为目标。类型将自动设置为自定义。
  5. 在自定义策略字段中键入 NSEntityMigrationPolicy 子类名称。您可以使用NSEntityMigrationPolicy本身,因为我们没有覆盖任何内容,但我没有尝试过。
  6. 在"属性映射"选项卡中,您可以看到表 A 中所有字段的值表达式字段。在每个字段中键入 $source.attributeNameInYourOldTableGoesHere。
  7. 初始化持久存储时,将 NSInferMappingModelTAutomatic Option 更改为 NO 和 NSMigratePersistentStoresAutoOption 更改为 YES。

此致敬意

斯文。

最新更新