2016-04-12 41 views
0

我想將數據從一個商店複製到另一個商店。目標持久性存儲可能已經有記錄。這是否比任何更簡單的方法,比手動通過所有記錄並插入新的上下文並保存?在覈心數據中的持久性存儲之間複製記錄?

+0

我設法完成此操作的唯一方法是在應用程序啓動後顯示進度指示器視圖,該視圖鎖定視圖狀態,然後繼續手動遷移商店。當我需要完全遷移我的Core Data模型時,我只做了兩次。對於增量更改,我只會使用自動遷移。 –

回答

2

如果要複製全部的數據,可以使用migratePersistentStore:toURL:options:withType:error:,這是NSPersistentStoreCoordinator上的一種方法。這將有效地將整個持久性存儲複製到新的持久性存儲文件。有些事情需要注意:

  • 儘管有這個名字,但這種方法與模型版本控制沒有任何關係。兩者都使用「遷移」一詞,但它們是不同的過程。
  • 在嘗試此操作之前,您應該確保已保存全部未完成的更改。
  • 這樣做了以後,你要從中遷移該店從這就意味着
    • 被管理對象的任何現有的引用現在已無效coordinator--刪除。你應該重新獲取它們。
    • 如果您繼續使用協調器,那麼您正在使用新的存儲文件。

如果你不想複製數據的所有,你需要「手動」做,從老店獲取對象和創造的新的等效對象。

+0

如果目標網址中存在持久性存儲,將從目標持久性存儲中刪除記錄還是保留並添加新記錄? –

+1

內置遷移方法旨在創建持久性存儲的新副本,並且不會與任何現有數據合併。不過,「手工」操作可以編寫代碼。 –

相關問題