你的位置:首页 > 操作系统

[操作系统]Xcode CoreData 存储报错问题。


因项目接口变动,导致之前的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文件。

具体方案 参考:http://stackoverflow.com