因項目介面變動,導致之前的CoreData欄位需要調整。於是記錄下出錯的流程和解決方案。步驟如下: 1. 先在 *****.xcdatamodeld 文件中添加需要調整的欄位。並更新本地model實體。 2. 我的流程是接到消息後本地存儲在CoreData裡面,然後UI展示(具體消息推送和接收問題, ...
因項目介面變動,導致之前的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> .tabls Error: unknown command or invalid arguments: "tabls". Enter ".help" for help
sqlite> .databases Error: 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