如何迁移刚刚创建目标实体模型的 Coredata 中的实体

How to Migrate an entity in Coredata where destination entity's model is just created

我有一个模型VersionVersion 的实体 passPhrase 需要迁移到 Home 模型中的新实体 passPhrase

但是Home模型是在新版本的数据库中引入的。它在旧 xcdatamodel 中不存在。如何从

迁移数据
Version.passPhrase to Home.passPhrase

在核心数据中,更改实体/模型映射不属于轻量级迁移。您必须通过子类化 NSMigrationManager 并实现自定义 NSEntityMigrationPolicy 来手动处理它。

Apple 几乎没有提供关于 subject.Please 检查 Custom Core data migration 的详细示例的文档。希望这会有所帮助。

CoreData 迁移的黄金法则是 - 不惜一切代价避免自定义迁移。 :)

所以这样做的方法是使用轻量级迁移来添加您的新实体,然后只需使用一次性迁移脚本来移动您的数据。

您可以从 Version class 定义中删除 passPhrase 属性,但您现在需要将其保留在模型中,这样您仍然可以访问旧的数据。当您确信所有用户都已升级到较新版本时,可以在将来的某个时间清理它,或者永远保留它。

要在复制过程中访问现有值,只需使用 [version valueForKey:@"passPhrase"],然后在复制后以相同的方式清除它 [version setValue:nil forKey:@"passPhrase"]