私はテキストの配列を反復処理しています。反復するたびに、次のようになります。
- initWithEntity:insertIntoManagedObjectContextを使用して管理対象オブジェクトを作成する
- テキストの解析
- 表示順序の決定
新しく作成されたオブジェクトがテーブルビューに表示されます。
fetchResultsControllerの超クールな無料機能により、insertIntoManagedObjectContextが呼び出されると、セルがテーブルビューに自動的に挿入されます。
問題は、新しい各オブジェクトの処理にわずかな遅延(〜20ms)があり、テキスト行の順序が更新中のテーブルビューとは異なる順序になっていることです。これにより、すべてのセルが表示順序を理解し、他のセルがその後ろにすばやく挿入されるため、画面がちらつきます。(これが不明確な場合は、この効果のビデオを投稿できます。これほど説明するのは難しいとは思いませんでした。)
テキストの行を取得し、最初にそれらを別の配列に解析してから、その配列をmocに挿入するのは論理的ですが、これらは管理対象オブジェクトであるため、割り当てることはできません。 initWithEntity:insertIntoManagedObjectContextを呼び出します。これにより、セルがテーブルビューに自動的に挿入されます。
didChangeObjectメソッドでinsertRowsAtIndexPaths:withRowAnimationを取り出し、反復が終了したときにreloadDataを呼び出すだけでは機能しませんでした。(そうすべきですか?)
すべてのオブジェクトが作成されるまでテーブルを更新しないようにしたいだけです。 fetchResultsControllerがないと簡単ですが、fetchResultsControllerを使用してこれを行う方法がわかりません。SOに関する私の質問によく従うので、ここで何が欠けていますか?