0

I'm looking for a memory efficient way to take only one row from a fetch result set. This must be random.

I thought using [context countForFetchRequest:fetch error:nil]; and get an int random value between 0 and that and offset + limit the fetch to 1 result. But I can't find whether or not it doesn't allocate memory for each item it counts.

Is "count" a lightweight operation? Or does it need to instantiate objects in the context before being able to count them?

4

1 に答える 1

2

ドキュメントはやや不明確ですが、 「特定のフェッチ要求が返すオブジェクトの数」というフレーズが含まれています。さらに、Core Data は非常に軽量なものを作成する傾向がありcountます。たとえば、エンティティ インスタンスを使用するとcount、対多関係の最後にあるオブジェクトの数を呼び出して、それらすべてのオブジェクトをインスタンス化したり、その障害を発生させたりすることなく調べることができます。私はそれに行くと思いますが、自分でプロファイリングしてください - 時期尚早に最適化しないでください!

于 2012-07-13T22:18:17.347 に答える