2011-08-21 50 views
1

我正在使用CoreData從預填充的sqlite數據庫讀取數據。除非我決定將另一個實體添加到CoreData模型(以及另一個表到sqlite數據庫),否則一切都很好。我已經嘗試了幾件事情,包括在Xcode中對模型進行更改,刪除sqlite數據庫,然後希望它像過去一樣生成新的數據庫。使用SQLite進行數據模型更改

但是不管是什麼我已經試過,我得到這個錯誤:

The model used to open the store is incompatible with the one used to create the store.

也許我不這樣做的正確的方式,但它似乎像Xcode中,難以改變的數據模型,這在開發應用程序時對我來說沒有意義。

回答

1

一般而言,如果您刪除了應用並重新創建它,那麼項目附帶的樣板代碼將生成一個新的(並且像您說的兼容的)數據庫。

此外,CoreData旨在用作具有持久性的對象圖;由於提供這個功能而生成的SQLite數據庫是自己的業務。

如果您的意思是:'我有一個有效的CoreData存儲文件和模型,並且我正在嘗試手動升級存儲文件以匹配新模型',那麼您違反了規則框架。要將不兼容的商店變身爲新模型,您需要使用versioning and mapping models(不需要直接觸摸SQLite數據庫)。

+0

我已經嘗試重置模擬器中的內容,但這並沒有幫助。你的意思是把我的代碼複製到某個地方,刪除整個項目,開始一個新項目,然後導入我的代碼會起作用嗎? 偉大的鏈接 - 謝謝!我會檢查出來的。 – Miles

+0

您的SQLite存儲文件是否生成到手機上的本地目錄(即您的應用程序的Documents目錄),或者您是否嘗試從Resources文件夾中使用它?因爲從模擬器中刪除應用程序肯定會將文件從Documents目錄中刪除(這正是我最初的意思 - 刪除整個項目將會超出最高層)。 –

+0

我正在使用資源文件夾中的數據庫。我試過從資源文件夾和模擬器中刪除數據庫。 – Miles

相關問題