テーブル ビューをサポートするNSFetchedResultsController
(FRC) があります。定義上、定義しているフェッチ要求に関連するマネージド オブジェクト コンテキスト (MOC) の変更をリッスンしています。
このテーブル ビューが表示されている間、監視している FRC に関連する管理対象オブジェクトを使用して、実行する小さなインポート (数十のレコードなど) がある場合があります。
テーブル ビューをサポートするピア MOC でインポートを実行します。両方の MOC はNSMainQueueConcurrencyType
で、共通の親 MOC はNSPrivateQueueConcurrencyType
です。
保存してインポートが完了するとすぐに、以前にセットアップした通知がハンドラーを起動します。mergeChangesFromContextDidSaveNotification:
- (void)scratchpadContextDidSave:(NSNotification *)saveNotification {
log4Info(@"Default Context now merging changes from Scratchpad Context save notification.");
[self.defaultContext mergeChangesFromContextDidSaveNotification:saveNotification];
}
質問:mergeChangesFromContextDidSaveNotification:
リッスンしている FRC が通知される前に を完了するに
はどうすればよいですか?
動機入ってくる FRC の新しいデータは、私のアプリケーションである種のトリガーとして機能します。これは、マージされたすべての変更が利用可能である 限り問題ありません。私の FRC は、完全な情報を持っていないため、すぐに行動します。
このように FRC が辛抱する必要があるロジックを削除しますが、マージ操作全体が完了するまで、変更通知が送信されないように「ロック」する方法を認識していないことが懸念されました。