私は150000以上のレコードを処理するCore Dataプロジェクトに取り組んでいます。レコードは、NSFetchedResultsControllerを使用してテーブルビューで表示されます。レコードは、私のエンティティの異なる属性を使用してソートされます。アプリケーションを終了した後にNSFetchResultsControllerキャッシュを保存します
アプリを素早く感じさせるために、さまざまな並べ替え記述子を持つ複数のNSFetchedResultsController
を作成して、対応する並べ替え結果を表示しました。私は、アプリケーションが起動したときにFRCを初期化し、FRCが初期化されるまでユーザーを待機させます。その後、ユーザーがソートキーを変更すると、現在のFRCを新しいソートキーのものに置き換えます。したがって、並べ替えは瞬時にと感じます。
RAMに入っているとアプリは正常に動作します。しかし、殺して再起動したときに初期化するには約15〜20秒(iPad 1)かかります。
アプリケーションの再起動時にアプリケーションが終了して復元されたときに、FRCのキャッシュデータをディスクに保存する方法はありますか?または、より良い回避策がありますか?
キャッシュファイルの場所をありがとう。しかし、FRCキャッシュの一部だけがディスクに保存されています(アプリの起動時にも永続的です)。また、最初にアプリを起動するときや、アプリを強制終了して再起動するときの検索との間に、目立つ違いはありません。私はアプリの起動時にキャッシュを読み込むことが最善のことではないかもしれないと思う。私は他の何かを探すべきです。私はすでにGCDを非同期フェッチに使用しています。 – CodeBreaker