大規模なデータ セットの UI 応答型のダウンロードと解析を実装し、それを Core Data に保存したいと考えています。
私のセットアップ:
ダウンロードしたコンテンツをカスタム ビュー コントローラーに表示します。私は NSFetchedResultsController を使用しません。
3 つの MOC があります。
- masterMOC (ディスクへの保存を担当、NSPrivateQueueConcurrencyType)
- mainMOC (masterMOC の子である UI、NSMainQueueConcurrencyType で使用)
- backgroundMOC (JSON からのインポートを担当し、別のスレッドで作成され、masterMOC の子)
バッチでインポートしています-50アイテムごとに、次の方法でMOC保存を実行します。
NSError *error;
[backgroundMOC save:&error];
NSManagedObjectContext *masterMOC = backgroundMOC.parentContext; //set during initialization
[masterMOC performBlock:^{
NSError *parentContextError = nil;
[masterMOC save:&parentContextError];
}];
masterMOC が保存された後に、mainMOC の変更が行われることを期待しています。masterMOC の保存中に (保存に時間がかかる) ランダムな管理対象オブジェクトのリレーションシップにアクセスしようとすると、保存が完了するまで UI がハングします。
質問: masterMOC の保存中に UI がフリーズしないようにするにはどうすればよいですか?