【问题标题】:How can i do core data migration?如何进行核心数据迁移?
【发布时间】:2019-03-22 21:15:00
【问题描述】:

我有一个旧的核心数据版本,在二进制数据中带有 Allows external storage。我创建了一个新的 Allows external storage 未选中。当我尝试启动我的应用程序时出现错误:

未解决的错误

Error Domain=NSCocoaErrorDomain Code=134140 "无法执行该操作 完全的。 (可可错误 134140。)“用户信息=0xbd5cd20 {原因=不能 查找或自动推断迁移的映射模型, 目的地模型=...

然后我在我的项目中创建了一个新文件 - Model.xcmappingmodel。我选择了源数据模型和目标数据模型。

然后我看到了

NSPersistentStoreCoordinator 错误:NSPersistentStoreCoordinator _coordinator_you_never_successfully_opened_the_database_schema_mismatch

【问题讨论】:

    标签: core-data core-data-migration


    【解决方案1】:

    对于未来的上下文...从 iOS 12 开始,写入 CoreData 的外部存储已被破坏。我的解决方案基于 Twitter 上 Drew McCormack 的 cmets。

    值得注意的是,只有写入被破坏,读取仍然有效。

    创建一个新属性,例如«original property name»Internal,其类型相同但Allows external storage未选中

    您现在有两个选择:

    • 在应用程序初始启动时迁移所有内容 - 即使用类似 «original property name»Internal == NULL && «original property name» != NULL 的谓词获取所有对象并移动数据(我这样做了)。
    • 即时迁移,即并行使用这两个属性,但只写入«original property name»Internal(而niling «original property name»

    最后一次值得注意的是,在客户更新数据之前,您的客户数据是安全的。小心翼翼,但你应该没问题。

    【讨论】:

      猜你喜欢
      • 2011-09-14
      • 2011-11-04
      • 2020-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 2023-03-14
      相关资源
      最近更新 更多