2012-02-16 16 views
0

アプリにコアデータを最初に追加したとき、私たちが従ったチュートリアルでは、アプリケーションデリゲートにNSManagedObjectContextという名前が作成されました。これはapplicationDidFinishLoadingWithOptions:に一度起こる私が作成するすべてのNSManagedObjectContextからNSManagedObjectContextDidSaveNotificationを監視する必要がありますか?

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(mergeChanges:) 
              name:NSManagedObjectContextDidSaveNotification 
              object:self.managedObjectContext]; 

:それは私たちが他のスレッドにコアデータを使用した場合、スレッドのコンテキストを保存したとき、私たちはそうのように、私たちの主なコンテキストを更新するためにオブザーバーを追加する必要があることをお勧めします。しかし、NSManagedObjectContextのドキュメントには、次のように書かれています。

いくつかのシステムフレームワークでは、内部的にCore Dataを使用しています。これらの通知をすべてのコンテキストから受け取るように登録した場合(オブジェクト・パラメータとしてnilをaddObserver ...メソッドに渡す)、処理が困難な予期しない通知を受け取ることがあります。

これは、主なコンテキストではなく、オブジェクトのパラメータが(私の場合は背景のコンテキストで)保存されているコンテキストでなければならないことを示唆しています。それは事実ですか?作成したすべてのNSManagedObjectContextからNSManagedObjectContextDidSaveNotificationを監視する必要がありますか?

答えて

4

サイモン、

-addObserver:selector:name:object:方法におけるオブジェクトは、通知の送信元です。あなたの場合、それは背景NSManagedObjectContextでなければなりません。

あなたが作成するすべてのコンテキストを観察する必要がありますか?すべてのものと同様に、それは依存します。たとえば、コンテキストをスクラッチパッドとして使用したい場合があり、その中から何も保存しないことがあります。なぜそれを観察するのは気にかかりますか?一般的に、永続ストアを変更するすべてのコンテキストを監視する必要があります。

アンドリュー

関連する問題