23

To-Core Dataの多くの関係は、NSSetによって表されます(エディターを使用して自動的に生成されます...NSManagedObjectサブクラスを作成します。..メニュー。

NSSet *を反復する最も効率的な方法はどれですか?

NSSet* groups = [contact groups];
for(Group* group in groups) {
    NSString* groupName = [group name];
}

また

NSSet* groups2 = [contact groups];
NSArray* groupsArray = [groups2 allObjects];
for(Group* group in groupsArray) {
    NSString* groupName = [group name];
}

または別の方法?

4

1 に答える 1

19

最初の方がおそらく効率的です。後者がより効率的である場合、Apple は単純にそのルートを使用して前者を実装します。

そうは言っても、パフォーマンスが問題であると思われるために質問している場合は、おそらく、障害のあるオブジェクトのコア データに多くの時間を費やしているということです。賢明な動きは、 ; でフェッチを行うことself in %@ですgroups。フェッチ要求returnsObjectsAsFaultsを NO に設定し、適切なrelationshipKeyPathsForPrefetchingものが指定されていることを確認してください。その最終的な効果は、反復しようとしているすべてのデータが、多数の個別のトリップでオンデマンドでフェッチされるのではなく、バッキング ストアへの 1 回のトリップでフェッチされることです。

于 2012-09-28T07:15:48.617 に答える