Core Data で TableView を使用するとクラッシュの問題が発生します。ヘルプをいただければ幸いです。シナリオは次のとおりです。
Core Data に格納されたデータを表示する UITableViewController があります。ドキュメントの指示に従って、NSFetchResultsController を使用してフェッチを行います。メインスレッドがデータをフェッチするための専用の NSManagedObjectContext があります。
データは実際にはサーバーから来ています。アプリケーションが起動すると、コア データ スタックにデータを更新するためのバックグラウンド スレッドがあります。Apple の推奨に従って、バックグラウンド スレッドで別の NSManagedObjectContext を使用してデータを更新します。更新中、古いデータは削除されます。
バックグラウンドが変更を保存した後、NSManagedObjectContextDidSaveNotification を使用して、メイン スレッドのコンテキストで mergeChangesFromContextDidSaveNotification を実行するための呼び出しをトリガーしました。
UITableViewController を呼び出してリロードする FRC の controllerDidChangeContent も実装されています。
データの更新中に TableView をスクロールすると、アプリがクラッシュし、「コア データが障害を実行できませんでした...」というエラーが表示されます。コードをトレースした後、データの削除を保存するバックグラウンド スレッドとメイン スレッドのコンテキスト マージ操作の間にわずかなタイム ラグがあることが原因であると考えています。このタイム ラグ中に、メイン スレッドのコンテキスト内の管理対象オブジェクトの一部が削除されるため、テーブルがスクロールされ、データ ソース メソッドが削除されたオブジェクトにアクセスすると、アプリがクラッシュします。
私の信念は正しいですか?その場合、このタイムラグをどのように処理すればよいですか?
どうもありがとう。