因项目接口变动,导致之前的CoreData字段需要调整。于是记录下出错的流程和解决方案。步骤如下:
1. 先在 *****.xcdatamodeld 文件中添加需要调整的字段。并更新本地model实体。
2. 我的流程是接到消息后本地存储在CoreData里面,然后UI展示(具体消息推送和接收问题,之前已经做好了,不在这里讲解。)。因我是真机调试,收到消息推送后,但是一直无数据。于是想去本地sqlite里面查看是否已经将消息存储完毕,于是捕捉到路径并执行进入sqlite时问题来了:
sqlite3 /var/mobile/Containers/Data/Application/29DC033C-817A-4860-911D-0F110F9B38B4/Documents/JiangSuEchat.sqlite
执行以上语句是没问题的。但是却无法获取.database; 或 .tables;
错误如下:
sqlite> .tablsError: unknown command or invalid arguments: "tabls". Enter ".help" for help
sqlite> .databasesError: unable to open database "/var/mobile/Containers/Data/Application/29DC033C-817A-4860-911D-0F110F9B38B4/Documents/JiangSuEchat.sqlite": unable to open database file
解决方案:
错误信息:无法打开数据库文件。
是我二了,因真机调试中,CoreData很明显是存储在手机里面的,我用电脑访问手机的路径SQLite,则不是很明显的错误么?所以将环境改为虚拟机调试后,重新获取到虚拟机的SQLite文件路径执行以上步骤即可查询数据了。
3. 解决以上问题,行动继续。编译项目。无问题。
点击消息中心读取本地SQLite消息的时候又报错了。如下:
The model used to open the store is incompatible with the one used to create the store
解决方案:
因CoreData本来就作为数据值持久化存储使用的,在变更了里面数据字段后。导致冲突存在了。按如下操作即可解决这个问题:
a.clear 项目文件。
b.删除 虚拟机里面的app文件。
具体方案 参考: