9

CoreDataにデータをダウンロードしてインポートするNSOperationサブクラスがあります。

これを行ったら、コンテキストを保存してデフォルトのコンテキストにマージします。

保存はブロックで行われるのではなく、すでにBGスレッドにあるため、同期的に行われます。

変更を行ったら、どのMR保存方法を使用する必要がありますか?

それらは数十あり、それぞれが何をしているのかよくわかりません。

使用する必要があります...

- (void)save:
- (void)saveOnlySelfAndWait;
- (void)saveToPersistentStoreAndWait;

または、すべての変更を行う必要があります...

+ (void)saveUsingCurrentThreadContext...

操作の終了を制御できるように、同期させたいです。

少なくとも誰かが異なるセーブの違いを説明することができます。

4

1 に答える 1

14

私は、これらの方法が十分に文書化されていないことを認めます。ただし、それらはCoreDataのネストされたコンテキストモデルにかなりよく従っています。

  1. で使用しMagicalRecordないでください。これらの追加のエラー処理、ロギング、および完了ハンドラーがすべて組み込まれています。これらを使用する必要があります。save:NSManagedObjectContextMagicalRecord

  2. あなたはデータがどこに行く必要があるかを知っているようです(1つのコンテキストからルートまで)。使用する必要のある保存方法は、階層によって異なります。深さが1レベルしかない場合(つまり、defaultContextの子コンテキスト内)は、saveOnlySelfAndWaitに保存されますdefaultContext。それ以外の場合はsaveToPersistentStoreAndWait、データストアに至るまで階層をトラバースします。

  3. メソッドはandWait呼び出しをブロックしています。完了したハンドラーの呼び出しはそうではありません。これらの使用はかなり簡単です。

于 2013-03-21T15:25:07.923 に答える