我有一些主數據,它們是JSON文件,我需要使用CoreData導入。交易點是所有主人正常插入的時候。但是,在提交之前,內存的使用量正在增加。在提交之前,應用程序因過載內存而崩潰。CoreData導入過載內存
我在想下面的兩個解決方案。
使用SQLite的功能,如將數據保存到臨時文件。 (我不確定功能是否存在。)
使用兩個DB文件。一個是手術,另一個是暫時的。如果導入正常完成,則將時間替換爲操作DB。
但仍不確定。有沒有人知道這種情況下的解決方案?謝謝。
UPDATE1:
所以你要導入到一個空的數據存儲,或者要添加到您需要恢復到失敗現有的數據?
在我而言,這是下面的過程。
刪除現有數據。 (所有表)
導入到一個空數據。主數據完成
後,提交。如果發生錯誤,則回滾事務。刪除和導入被恢復,以確保主數據之間的一致性。
而且,爲什麼在移動設備上的數據量?
我的客戶的需求。
UPDATE2:
我試圖禁用的UndoManager但結果並沒有影響那麼大。我不需要「撤消」,但我需要回滾。在這種情況下,setUndoManager可用...?
[[self managedObjectContext] setUndoManager:nil] ;
所以你要導入到一個空的數據存儲,或者要添加到您需要恢復到失敗現有的數據?另外,爲什麼要在移動設備上做很多數據? – Wain
@Wain感謝您的評論。我編輯了我的問題。首先刪除所有數據,然後導入空數據。 – zono
你有沒有考慮批量進口?然後,您可以將每個批次保存在一個私有MOC中,該批次在完成後可以保留在另一個附加到持久存儲協調器的私有MOC上。 – andrewbuilder