0

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

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

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

表 X 和 Y 应删除。

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

4

1 回答 1

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。

最好的祝福,

斯文。

于 2012-05-25T15:14:02.870 回答