2011-05-13 71 views
0

在我的可可應用程序中使用核心數據框架時,我創建了一些實體並使用NSEntityDescription創建了引用。當我運行應用程序時出現錯誤,指出「用於打開持久存儲的託管對象模型版本與用於創建持久存儲的版本不兼容。」使用核心數據的問題

回答

2

您需要從設備/模擬器中刪除應用程序,然後重新構建並運行。

每次更改模型時都會發生這種情況,因爲舊數據存儲將保留在應用程序文檔文件夾中,而訪問它的類已被更改。

在開發的後期階段,您會希望引入商店遷移,您的測試人員和用戶在每次發佈新版本時都不必刪除他們的數據。如果您的模型保持靜態,則在將來的更新中不需要遷移數據。

您可能需要查看Core Data Migration Programming Guide瞭解更多信息。

0

您必須從刪除持久性存儲文件:(根據您的Xcode版本)

  • ~/Library/$AppName
  • ~/Library/Application Support/$AppName

0

答案是有點棘手但這總是對我有用。這是一個乾淨安裝一個新的兼容.sqlite文件,不是遷移

啓動模擬器,刪除應用程序和數據(刪除應用程序後彈出)。

退出模擬器

打開X-代碼,進行任何編輯您的數據模型後

刪除{*appname*}.sqlite文件(或備份它,從項目文件夾中刪除,並刪除參考)

清潔應用(Product > Clean

在模擬器中運行應用程序(本教程中我將承擔4.2)

當模擬器運行時,在Finder窗口,導航到: {*home*} > Library > Application Support > iPhone Simulator > 4.2 > Applications > {*random identifier*} > Documents > {*appname*}.sqlite

複製這個文件到另一個位置

停止運行在您的應用程序X-代碼

拖放{ appname} .sqlite文件放入X代碼中的文件列表中。

在彈出的對話框中,確保選中copy to folder複選框。

Product > Clean

然後在模擬器上再次運行應用程序

現在你應該有一個工作sqlite的文件!

乾杯, 羅伯特