美文网首页
CoreData: error: reason : The m

CoreData: error: reason : The m

作者: ios_暗夜行者 | 来源:发表于2024-05-29 10:30 被阅读0次

记录一下,这个错误通常是我们修改了DataModel文件,增加了新的Entity,包括Attribute属性、Relationship关系等等导致的

解决方法:一.Core Data自带的轻量级的数据迁移

错误原因写的比较清楚了,reason=The model used to open the store is incompatible with the one used to create the store,这个是因为我新建了一张表,但是我没有打开轻量级的迁移Option。这里会有人会问了,我新建表从来没有出现这个错误啊?那是因为你们用的第三方框架就已经写好了改Option了。(场外人:这年头谁还自己从0开始写Core Data啊,肯定都用第三方框架啊)那这里我就当讲解原理了哈。如果是自己从0开始写的Core Data的话,这里是应该会报错了,解决办法当然是加上代码,利用Core Data的轻量级迁移,来防止这种找不到存储区的闪退问题

解决方法:二.Core Data手动创建Mapping文件进行迁移

1.创建一个模型版本1

2.创建Mapping文件进行迁移

选择需要Mapping的源数据库

再选择目标数据库

接着命名一下Mapping Model文件的名字

这里说明一下,名字最好能一眼看上去就能区分出是哪个数据库的版本升级上来的,这里我写的就是ModelV0ToV1,这样一看就知道是V0到V1的升级。

这里说明一下Mapping文件的重要性,首先,每个版本的数据库之间都最好能加上一个Mapping文件,这样从低版本的数据库升级上来,可以保证每个版本都不会出错,都不会导致用户升级之后就出现闪退的问题。

迁移代码:

这是我简单封装 的coredata单利

GmDataManager.m

GmDataManager.h

参考:Core Data数据迁移指南 · CoreData从入门到精通 (gitbooks.io)

相关文章

网友评论

      本文标题:CoreData: error: reason : The m

      本文链接:https://www.haomeiwen.com/subject/fvwkqjtx.html