2010-07-12 101 views
1

我有了被預裝了默認的數據sqlLite核心數據模型中的iPhone應用程序。如果用戶修改或刪除模型中的記錄,同時保留用戶添加到模型中的任何新記錄,我想讓用戶恢復此默認數據。恢復默認記錄到核心數據數據庫

的sqlLite數據庫複製到第一個運行的用戶文檔目錄,所以觸及原始數據庫是在應用程序中封裝。在兩個數據庫之間複製記錄最簡單的方法是什麼?我假設它需要設置一個額外的persistentStoreCoordinator,或者將原始的dB作爲額外的persistentStore添加到協調器中,但這些文檔對於如何做到這一點很吝嗇。

感謝,

JK

回答

1

如果你不想刪除目的地存儲裝置,只是覆蓋它,則工作流程是:

  1. 站起來與源第二個核心數據堆棧持久性商店。
  2. 從源中提取每個實體。
  3. 尋找目標中的物體。
  4. 如果存在,更新它。
  5. 如果沒有,創建它。
  6. 保存目標商店。

取決於你有多少數據,這可能是一個非常昂貴的操作。

+0

謝謝,馬庫斯。這就是我想我必須要做的。有問題的對象具有BOOL屬性isCustom,所以我可以從讀寫持久性存儲中刪除所有不是自定義用戶創建對象的對象,然後插入原始dB持久性存儲中的所有對象。 – Alpinista 2010-07-13 19:26:17