2013-05-02 45 views
2

我在我的應用程序中使用核心數據,並且只想導出一些數據並將其導入其他設備。核心數據:將對象從一個持久性存儲移動到另一個

爲了避免遷移問題,我想做到以下幾點:

出口:

  • 創建第二個export.sqlite文件具有相同的數據庫模型,但空
  • 加該文件與addPersistentStoreWithType
  • 將一些ManagedObjects複製到該.sqlite
  • 刪除添加的持久性存儲

進口: - 複製export.sqlite文件到應用程序 - 添加.sqlite文件與addPersistentStoreWithType - 拷貝過來 數據 - 刪除添加persistentStore

但如何實現這一目標?即如何告訴我的託管對象如何將自己複製到其他商店?

+0

你有沒有做到這一點?我也有類似的問題http://stackoverflow.com/questions/33694048/coredatamigrate-data-from-bundled-db你能幫我嗎? – anoop4real 2016-01-22 09:52:52

回答

2

如何告訴我的管理對象如何將自己複製到其他商店?

你不能,不能直接反正。你必須做一些事情,如:

  • 對於源數據存儲中每個對象,
    • 用相同的實體類型
    • 分配新對象的屬性創建目標存儲中的新對象與原始對象相同的值
  • 一旦完成創建新對象,請執行第二遍設置任何關係。

這些關係需要分開進行,因爲關係中的所有對象都需要存在才能創建關係。

+0

以及如何告知託管對象在哪個持久性存儲中創建並保存? – swalkner 2013-05-02 16:14:52

+1

當我做了這樣的事情時,我使用了兩個完全不同的核心數據堆棧 - 相同的模型,但是不同的持久性存儲協調器和受管理的對象上下文。如果你想用一個堆棧來實現,可以看看NSManagedObjectContext的'assignObject:toPersistentStore:'方法。 – 2013-05-02 16:16:41

+0

非常感謝您的幫助,似乎我到了那裏......現在我只需要獲得製作深層副本的最佳方法......您是否建議手動執行此操作,或者是否存在自動/動態解決方案。沒有找到工作的一個呢...... – swalkner 2013-05-03 07:24:26

相關問題