我們最近推出CoreData到我們的應用程序,和之前發佈了一個不完整的CoreData模型版本。在那個發行版本中,我們從來沒有實現將數據寫入sqlite數據庫的代碼,只有模型被實現。
在我們的內部測試中,我們會將設備恢復到先前交付的不完整模型,然後更新到較新的模型,而不必執行遷移,也不會遇到不兼容的商店異常。
但是,在我們的測試版測試中,我們發現存在因不兼容的商店而導致崩潰的現有用戶,而一些現有用戶則沒有。
問:
難道不兼容的商店總是導致崩潰,並且如果是這樣,爲什麼我們不能從舊版本升級到不同的CoreData模型時遇到崩潰?我應該提到,當我們對最新的CoreData模型進行更改時,我們確實會拋出不兼容的存儲錯誤,但是當我們恢復到原始版本的核心數據模型時,我們不會看到拋出此異常。
當你在coredata中進行任何更改時,你必須刪除舊版本並使用新版本,如果你仍然使用舊版本,所以它會導致你崩潰。 –
看看:https://www.raywenderlich.com/27657/how-to-perform-a-lightweight-core-data-migration – raki
如果你在安裝之前刪除你的設備的應用程序,那麼它沒有CoreData架構衝突,所以沒有崩潰。如果您的測試用戶在使用具有不同CoreData架構的應用程序的新版本之前未將應用程序從其設備上刪除,那麼架構中的衝突將導致崩潰。 – Zhang