我该如何进行核心数据迁移?

时间:2018-10-18 05:39:52

标签: core-data core-data-migration

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

未解决的错误

  

Error Domain = NSCocoaErrorDomain代码= 134140“该操作无法   完成。 (可可错误134140。)“ UserInfo = 0xbd5cd20 {原因=不能   查找或自动推断要迁移的映射模型,   destinationModel = ...

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

那之后我看到

  

NSPersistentStoreCoordinator错误:NSPersistentStoreCoordinator   _coordinator_you_never_successfully_opened_the_database_schema_mismatch

1 个答案:

答案 0 :(得分:0)

出于将来的考虑...从iOS 12开始,写入CoreData的外部存储的操作已中断。我的解决方案基于Drew McCormack在Twitter上的评论。

值得注意的是,只有写作被打破,阅读才能发挥作用。

创建一个新属性,例如«original property name»Internal,该属性具有相同的类型,但带有{strong>未被选中的Allows external storage框。

您现在有两个选择:

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

最后一次值得注意的是,客户的数据在更新之前是安全的。仔细尝试,但您应该没事。