当用户
使用较新的模型版本升级到较新版本时,我想远程处理所有实体。例如
应用程序版本 1.0 和模型版本 1表 X表 Y
升级到应用程序版本1.1和模型版本2时,我添加了两个表表 H表 K
应删除表 X 和 Y。
如何识别当前数据模型版本并执行这些删除操作?
您可以使用
自定义迁移策略和映射模型进行迁移。
- 您有一个包含表 A 的模型版本 1.0 和包含表 B 的版本 1.1,但没有表 A
- 创建从版本 1.0 作为源到 1.1 作为目标的映射模型。
- 您可以创建一个新文件,即 NSEntityMigrationPolicy 的子类,但如果您不打算在代码中进行一些棘手的转换,则不必实现任何方法。
- 在映射模型中,您具有实体映射,并将表 A 设置为源,将表 B 设置为目标。类型将自动设置为自定义。
- 在自定义策略字段中键入 NSEntityMigrationPolicy 子类名称。您可以使用NSEntityMigrationPolicy本身,因为我们没有覆盖任何内容,但我没有尝试过。
- 在"属性映射"选项卡中,您可以看到表 A 中所有字段的值表达式字段。在每个字段中键入 $source.attributeNameInYourOldTableGoesHere。
- 初始化持久存储时,将 NSInferMappingModelTAutomatic Option 更改为 NO 和 NSMigratePersistentStoresAutoOption 更改为 YES。
此致敬意
斯文。