2012-03-16 46 views

回答

5

在插入所有100個對象(而不是每次插入後)之後,您正在尋找的內容是核心數據中的save

當對象被插入到核心數據中時,它們只存在於內存中。要將新對象保存到光盤,您應該保存將進行所有更改(插入,更新和刪除)並將它們寫入光盤的光盤。


如果你看一下the documentation for -insertObject(如下圖),你可以讀取插入對象只針對註冊更改時,保存插入的對象。

insertObject:

註冊到接收器的持久性存儲的下一次改變被保存插入的對象。

- (void)insertObject:(NSManagedObject *)object 

參數

對象

管理對象。

通過進一步觀察the documentation for -save:(如下圖),你會本身,它會(嘗試)保存所有的未保存的改變,在你的情況下,所有100個插入項目。

節省:

嘗試提交到註冊的對象未保存的更改自己的持久化存儲。

- (BOOL)save:(NSError **)error 

參數

錯誤

一個指向NSError對象。您不需要創建一個NSError對象。如果您通過NULL,保存操作將在第一次失敗後中止。

返回值

YES如果保存成功,否則NO

+0

這也很慢,因爲交易的速度增加會丟失。無論如何修改呢? – Jonny 2015-01-29 11:05:59

3
[[<#NSManagedObjectContext#> undoManager] beginUndoGrouping]; 
... do some data modifications .... 
[[<#NSManagedObjectContext#> undoManager] endUndoGrouping]; 

[[<#NSManagedObjectContext#> undoManager] undo]; // rollback 
...