0

私は2つの永続ストア(両方ともsqliteストア)を持っているため、2つの永続ストアコーディネーターと各コーディネーターは独自のmanagedObjectContextで動作します。今、私はここに状況があります。私の見解の1つは、NSManagedObjectContextDidSaveNotificationの通知を監視しています。通知は正常に受信されますが、通知をトリガーしたコンテキストを比較するにはどうすればよいですか。

私はそれが2つのコンテキストのどちらかであるかどうかを確認するために次のことを行いました。

-(void)contextSaved:(NSNotification*)notification{
   NSManagedObjectContext *context = notification.object;
   if(context == myFirstContext){
     NSLog(@"This is the first context");
   }else{
     NSLog(@"This is the second context");
   }
}

これらの条件は両方とも失敗し、ログは取得されませんが、オブジェクトのアドレスをログに記録すると、次のようになります。

NSLog(@"Notification object pointer %p, first context pointer %@", context, myFirstContext);

これらの2つのコンテキストを通知のコンテキストと比較し、保存コンテキストを検出して処理するにはどうすればよいですか。提案してください。私はあなたが提供するどんな種類の助けにも本当にうれしいです。

4

1 に答える 1

0

これは、どの管理対象オブジェクトコンテキストが通知を投稿したかを確認する方法とまったく同じです。通知オブジェクトはMOCであり、他の既知のオブジェクトとまったく同じオブジェクトであるかどうかを知りたいので、==それらを比較する正しい方法です。どちらNSLogも出力を生成しない場合、このメソッドはほぼ確実に呼び出されていません。まだ登録していないか、登録したが引数NSManagedObjectContextDidSaveNotificationの値が間違っている可能性があります。objectこのメソッドの最初の行にブレークポイントを設定して、呼び出されるかどうかを確認してください。そうでない場合は、通知を登録した場所を確認し、通知が届かない理由を見つけてください。

于 2013-01-03T17:50:16.013 に答える