2

私は自分のプロジェクトで Core Data を使用しており、そのデータ障害システムに依存してキャッシュされたデータを返してきましたが、特にこれに基づいてビューを構成する UITableView にデータを表示するときに、いくつかのパフォーマンスの問題に遭遇しています。フェッチされたデータ。

基本的に、一意の ID を使用していくつかの NSManagedObject インスタンスを取得し、NSNumber に格納されている値を合計します。forループ内の約40の異なるオブジェクトに対してこれを行っており、UITableViewがリロードされるたびにこれを行います。

Core Data NSManagedObjects の変更をリッスンする方法や、自分のレベルでデータをキャッシュする方法を提案する方法はありますか?それとも、データの障害に依存する必要がありますか?

この状況を処理するための適切なパターンを教えていただければ、非常に感謝しています。

4

3 に答える 3

5

NSFetchedResultsController は、障害を処理し、UITableView とのクリーンなインターフェイスを提供するための優れたメカニズムを提供します。Instruments と Time Profiler を使用して、パフォーマンスの問題が具体的にどこにあるのかを把握します。

于 2012-08-22T14:58:33.483 に答える
1

最初に行う必要があるのは、NSFetchedResultsController を使用することです。UITableview で動作するように作成されており、ここで達成しようとしていることに非常に適しています。次に、fetchBatchSize をフェッチ リクエストに割り当てます。すべての記録をメモリに保持する必要はありません。

于 2012-08-22T15:00:48.913 に答える
1

Core Data を直接使用して、プロパティの合計を取得できます。Fetching Specific Valuesというタイトルのセクションを読んでください。

必要なヒントはこれだけです。

NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"Count"];
NSExpression *sumOfCountExpression = [NSExpression expressionForFunction:@"sum:"
                                          arguments:[NSArray arrayWithObject:keyPathExpression]];

テーブルを何度もリロードしない限り、問題が発生するほど遅くはなりません。

于 2012-08-22T14:54:37.410 に答える