如何进行核心数据迁移?
Posted
技术标签:
【中文标题】如何进行核心数据迁移?【英文标题】: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
【问题讨论】:
【参考方案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
(而nil
ing «original property name»
)
最后一次值得注意的是,在客户更新数据之前,您的客户数据是安全的。小心翼翼,但你应该没问题。
【讨论】:
以上是关于如何进行核心数据迁移?的主要内容,如果未能解决你的问题,请参考以下文章