2012-03-16 3 views

答えて

5

あなたが探しているのは、各挿入後に100個のオブジェクトが挿入された後のCore Dataのsaveです。

コアデータにオブジェクトを挿入すると、オブジェクトはメモリ内にのみ存在します。新しいオブジェクトをディスクに永続化するには、すべての変更(挿入、更新、削除)を行い、一緒にディスクに書き込むセーブする必要があります。


あなたはthe documentation for -insertObjectを見れば(下記)を使用すると、オブジェクトを挿入するだけで変更が保存される際に挿入されるためのオブジェクトを登録することを読み取ることができます。

は、insertObject:

は、オブジェクトが受信側の永続ストアに変更が保存され、次回に挿入されるように登録します。

- (void)insertObject:(NSManagedObject *)object 

パラメータ

オブジェクト

管理対象オブジェクト。さらにあなたはそれ自体、それは(試みがする)すべて保存されていない変更、あなたのケース内のすべての100件の挿入のアイテムが保存されますすること(以下)the documentation for -save:を見ることによって

。保存

試みは彼らの永続ストアに登録されたオブジェクトへの未保存の変更をコミットします。

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

パラメータ

エラー

NSErrorオブジェクトへのポインタ。 NSErrorオブジェクトを作成する必要はありません。 NULLを渡すと、最初の失敗後に保存操作が中止されます。戻り値

YES保存が成功した場合

、そうでない場合はNO

+0

トランザクションからの速度の向上が失われるため、これも非常に遅いです。とにかくそれを修正するには? – Jonny

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

[[<#NSManagedObjectContext#> undoManager] undo]; // rollback 
... 
関連する問題