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

时间:2012-05-22 09:53:45

标签: objective-c core-data core-data-migration

当用户使用较新的型号版本升级到较新版本时,我想远程控制所有实体。例如,

App version 1.0&型号版本1 表X 表Y

升级到应用版本1.1&模型版本2,我添加两个表 表H. 表K

应删除表X和Y.

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

1 个答案:

答案 0 :(得分:1)

使用自定义迁移策略和映射模型执行迁移。

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

    斯文。