1

設定:

私はいくつかの UITableViewControllers (tvc) を持っており、それらはすべて個別の NSFetchedResultsController (frc) をインスタンス化します。ただし、これらの frc-s はすべて同じ ManagedObjectContext (moc) を使用します。

シナリオ:

ときどき、tvc-s の 1 つから、バックグラウンド プロセスを起動してデータを更新します。バックグラウンド プロセスは別のスレッドでデータを更新し、最後にメイン スレッドで [moc mergeChangesFromContextDidSaveNotification:] を呼び出します。次に、これらの変更を frc に伝達し、[frcDelegate controllerDidChangeContent:] を呼び出す必要があります。これは正常に機能します...ただし、関連付けられた tvc が更新を開始した frcDelegate に対してのみです。(すべての tvc-s は、その frc の frcDelegate として機能しています。)

予想される行動:

すべての frc-s が同じ moc にバインドされているため、すべての frc-s が変更を取得する必要があり、[frcDelegate controllerDidChangeContent:] がそれらすべてに対して呼び出される必要があります。

実際の動作:

[frcDelegate controllerDidChangeContent:] が 1 つだけ呼び出されます。

予想ではなく実際の動作が見られるのはなぜですか? これをどのようにデバッグすればよいですか? それともこれは正しい動作ですか?

4

1 に答える 1

1

これは予期される動作です。

フェッチされた各結果コントローラーは、フェッチ要求で指定されたエンティティの変更のみを監視します。おそらく、更新を開始したコントローラーに対応するエンティティのオブジェクトのみを変更しています。

于 2010-02-02T10:24:33.113 に答える