2

私はCoreDataを初めて使用するので、これがばかげた質問である場合は申し訳ありません。

NSManagedObject関係にアクセスして障害を発生させることによって生成された自動フェッチ要求にfetchBatchSizeプロパティを設定する方法はありますか?

たとえば、「Companies」エンティティと「Employees」エンティティがあり、「Companies」から「Employees」まで1対多の関係にあるとします。すべての会社を取得するためにフェッチ要求を行い、次に1つの会社に対してその従業員をロードしたいと思います。

明らかな方法は、次のようなことを行うことです。

NSSet *employees = [anyCompany employees];

しかし、同時に大量のデータをロードしないように、fetchBatchSizeプロパティを設定するにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

3

fetchBatchSizeは、永続ストアへの 1 回のラウンド トリップで取得されるレコードの数を定義するだけです。たとえば、1 つのエンティティに 1000 のエントリがあり、バッチ サイズが 20 の場合、すべてのエントリをフェッチするフェッチ リクエストは、実際には 50 の SQL ステートメントを実行します。

フェッチのコンテキストによっては、これがあまり効率的でないことは明らかです。メモリが問題になる場合は、フェッチ リクエストをバッチ サイズで調整できますが、ほとんどの場合、あまり気にする必要はありません。ただし、ストアへの不要な複数回の往復は、パフォーマンスに影響を与える可能性が高くなります。

したがって、次のような式を使用してください

aCompany.employees

Core Data にメモリ管理を処理させます。通常、表示または計算に実際に必要なエンティティと属性のみを取得します。

于 2013-01-25T01:19:58.230 に答える