【问题标题】:How to Migrate an entity in Coredata where destination entity's model is just created如何在刚刚创建目标实体模型的 Coredata 中迁移实体
【发布时间】:2016-10-25 05:13:25
【问题描述】:

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

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

迁移数据
Version.passPhrase to Home.passPhrase

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      Apple 提供的有关该主题的文档很少。请查看Custom Core data migration 的详细示例。希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2014-02-21
        • 2020-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-26
        • 2013-04-11
        相关资源
        最近更新 更多