2012-11-26 66 views
1

我可以做以下嗎?核心數據輕量級遷移 - 何時版本?

  1. 從一個應用程序的v1.0開始。版本數據模型,將新版本指定爲活動模式
  2. 在appDelegate中設置正確的選項,以使用輕量級移植創建NSPersistentStoreCoordinator
  3. 對模型和更新類進行簡單更改。編譯並確認一切正常。
  4. 另一個變化數據模型不改變版本,並再次更新類

當然,當我運行,數據模型將是不兼容的,因爲我已經沒有版本改變了它。但是由於我不會發布中間版本,我懷疑從v1.0更新到雙重更新的數據模型時數據遷移應該正常工作。

這是準確的嗎?

回答

1

這將工作只要滿足下列條件:

  1. 您已經創建了每個步驟的新模式版本;所以在上面的例子中,最後應該有三個:原始的,中間的,最終的。
  2. 應用程序必須能夠做到從1輕量級遷移到3。如果它不能也不會去通過2如果磁盤上的數據仍處於1

結構。如果所有這一切是真的,那麼它會工作。甚至你甚至可以在最終版本中發佈v2(雖然它們很小,但通常不值得)。

在開發過程中,我的建議是始終保持v1數據,只需更改v2並在每次需要調整v2時重新遷移。然後沒有中間人來處理。但是,在與Beta測試人員打交道/工作時,這並不總是可行的。

+0

謝謝馬庫斯。但在步驟4中,我不**版本數據模型。我只是改變它(和類)。如果我已經將兩組更改限制爲僅輕量級兼容的更改,那麼不應該核心數據能夠正確推斷v1 - > v3遷移,而不知道v2(實際上,v3只是一些就地更改到V2,而不是新版本)?請記住,v2絕不是瘋狂的。 –

+1

是的,除非您將v2數據放在磁盤上,否則核心數據將拋出一個錯誤,因爲它沒有源模型來計算增量。要進行遷移,Core Data需要任何遷移的源和目標。如果您將數據重置爲V1或重新開始,那麼您可以做到這一點。 –

+0

謝謝 - 是的,我假設沒有設備會有v2數據。野外的一切都是v1,只有模擬器和我的測試設備曾經遷移到V2,我將重新安裝。 –

相關問題