iOS アプリを初めて実行するときに、大量のエンティティを挿入しています。保存する前にコンテキストに挿入できるアイテムの数を知りたいですか? Web 呼び出しから大きな JSON オブジェクトを取得しています。JSON から大量のエンティティを抽出して挿入します。
大量の挿入をどのように処理すればよいですか?
ありがとうございました
iOS アプリを初めて実行するときに、大量のエンティティを挿入しています。保存する前にコンテキストに挿入できるアイテムの数を知りたいですか? Web 呼び出しから大きな JSON オブジェクトを取得しています。JSON から大量のエンティティを抽出して挿入します。
大量の挿入をどのように処理すればよいですか?
ありがとうございました
zumzum、
多数のアイテムをCoreDataにインポートする場合、心配する必要のある問題がたくさんあります。
最初のそして最も重要な問題はメモリの管理です。大きなJSONドキュメントは、膨大な数の小さなアイテムに解析されます。これらは、常駐VMフットプリントの不可逆的な成長を強制します。この常駐フットプリントは、アプリがOSによって強制終了される最大の理由です。割り当てられたメモリのサイズを小さくしても、常駐フットプリントのサイズが原因で強制終了される可能性があります。
したがって、大きなドキュメントは、積極的な中間メモリクリーンアップ操作を使用して段階的に処理する必要があります。操作の間にリセットを伴う同時MOCを使用するのが、進むべき道です。次に、末尾のトリミングパターンを実装して、メインスレッドのMOCに保持されている余分なメモリをクリーンアップします。
アンドリュー
保存前のコンテキストのサイズに関しては問題ないと思いますが、アプリがしばらくフリーズする可能性が高いため、必ずバックグラウンド スレッドで実行する必要があります。これがアプリを初めて起動したときにのみ発生する場合は、バックグラウンド スレッドにコンテキストを保存しながら、進行状況インジケーターまたは何かをメイン スレッドに配置できます。
コア データの同時コンテキスト保存の詳細については、この質問の最初の回答を参照してください。