如何迁移刚刚创建目标实体模型的 Coredata 中的实体
How to Migrate an entity in Coredata where destination entity's model is just created
我有一个模型Version
。 Version
的实体 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"]
我有一个模型Version
。 Version
的实体 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"]