2016-01-22 56 views
0

我的應用程序從我的後端加載用戶信息,然後嘗試使用核心數據保存所有內容。我有幾個實體,在我的數據模型中有一對多關係。我的問題是,如果我的數據庫中的數據發生變化,並且我需要修改實體之間的關係,例如添加/刪除,那麼是否需要進行大量遷移?我已經在網上搜索和閱讀了很多,看起來輕量級遷移不會這樣做,因爲我不是手動添加屬性/實體。如果我確實需要進行沉重的遷移,那麼會怎樣呢?我可以找到關於大量遷移的地方。我是否需要大量遷移以修改核心數據中的關係?

我也想過每次修改之前刪除以前的數據模型,然後保存整個新的實體。我不確定這是否是一種好方法,是否有更好的方法來緩存/存儲從後端檢索的數據?

+0

我可以問(愚蠢的問題),你的意思是與後端的東西,通常Coredata處理由本身就是數據存儲(數據庫,XML,文件)和視圖之間的通信,所以在我做出更多評論之前,我需要了解您是否不是複製功能(如使用核心數據並同時使用手動創建的sqlite文件) 。 – JuValencia

+0

我使用Parse作爲我的後端,所以基本上每次我對Parse進行查詢並獲取我需要的數據時,我都想使用Core Data存儲它,這樣我就不必每次頁面都隨機查詢呈現。 – jackson

+1

你想更改數據模型還是要更改數據? – Willeke

回答

0

也許你已經做到了這一點,但如果你沒有,當你改變模型,你需要保存爲一個新的版本,然後選擇一個當前版本與該錯誤應該消失。

步驟如下:

  1. 選擇Model.xcdatamodeld。
  2. 單擊編輯器>添加模型版本....
  3. 單擊完成以接受模型2作爲版本名稱。
  4. 選擇Model.xcdatamodeld。
  5. 單擊視圖>實用程序>顯示文件檢查器(或按Option +⌘+ 1)。
  6. 設置當前的模型版本,以模型2

下面的鏈接以解釋這個過程: Learning CoreData for iOS: Managed Object Model Migration

0

如果您不更改模型,您需要遷移。

也就是說,蘋果使用它的意義上的「遷移」,即僅僅參照數據模型。你的意思可能是數據「更新」。

以通常的方式進行數據更新:獲取要修改的對象,更改它們(例如,將不同的對象設置爲關係),保存。

+0

它一直拋出一個錯誤:與原始數據存儲不兼容(類似的東西),我沒有改變數據模型,所以這是因爲我沒有爲屬性的NSManagedObject子類? – jackson

+0

我相信你*確實*改變了數據模型。最簡單的方法是從設備/模擬器中刪除應用程序並再次運行。 – Mundi