天天看點

《Core Data應用開發實踐指南》一3.2 添加模型版本

本節書摘來自華章出版社《core data應用開發實踐指南》一書中的第3章,第3.2節,作者 (美)tim roadley,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視

為了不使應用程式像圖3-1那樣崩潰,我們需要在修改模型之前先建立新的模型版本。添加新模型之後,就不應該再删除舊版的模型了。舊的模型有助于把原來的持久化存儲區遷移到目前的模型版本。假如使用者的裝置上原來就沒有持久化存儲區,那麼可以先不考慮模型版本控制問題,等到應用程式在app store上架之後再說。

請按下列步驟修改grocery dude,以便添加模型版本:

選中model.xcdatamodeld。

點選editor>add model version...菜單項。

點選finish按鈕,将model 2用作版本名稱。

現在項目中應該會有兩個版本的模型了,如圖3-2所示。

《Core Data應用開發實踐指南》一3.2 添加模型版本

model 2.xcdatamodel這個新模型的内容一開始便與model.xcdatamodel完全相同,而開發者不經意間就會在錯誤的模型版本上進行修改。是以,為了防止這一情況,在編輯模型之前,應再三檢查你所標明的模型是不是自己要編輯的那個版本。應該養成抓取快照的習慣,甚至可以在編輯模型之前把整個項目都備份起來。

《Core Data應用開發實踐指南》一3.2 添加模型版本

請按下列步驟修改grocery dude,以便重新引入measurement實體:

可以在執行修改之前先抓取快照或備份整個grocery dude項目。

標明model 2.xcdatamodel。

建立名為measurement的新實體。

標明measurement實體,建立名叫abc的屬性,并将其類型設為string。

添加了新版模型之後,必須将其設為目前版本(current version),然後才能使應用程式使用它。

請按下列步驟修改grocery dude,以便修改目前的模型版本:

標明model.xcdatamodeld。

點選view>utilities>show file inspector菜單項(或按“option++1”組合鍵)。

将current model version設為model 2,如圖3-3所示。

如果想正常運作應用程式,那麼我們還必須配置好遷移選項,告訴core data應該如何遷移。要是現在就去運作應用程式的話,那自然還是會發生store is incompatible(存儲區不相容)錯誤。