2012-10-23 1 views
22

ビジネスが複数のキーワードを持つことができるような多値関係がある場合、サブクラスNSManagedObjectジェネレータでは、AppleはNSArrayの代わりにNSOrderedSetを使用します。CoreDataで順序付けされたmutli値関係のためにNSArrayの代わりにNSOrderedSetを使用する理由は何ですか?

NSOrderedSetのオーナーシップが少し速いという点を除いて、どちらもほぼ同じです。

アップルがもっと親しみやすく有名なNSArrayを使わない理由は何ですか?

答えて

61

私の推測では、次のようになります。NSOrderedSetは順不同関係をNSSetに似明確な要素のコレクションを、管理しているため。

NSArrayを使用すると、別のオブジェクトに複数回関連するオブジェクトを作成できます。 docsから

+0

ああ....彼らは区別しなければなりません.....これは正解です。 –

+1

これを考えれば、誰がNSArrayを使うのですか? – PostCodeism

+10

@PostCodeism - あなたは、互いの相対的な位置が重要である別個でない要素のシーケンスを格納するかもしれないからです。 IEの場合は、単語を表す文字の配列や、曲を表す音符の配列があります。手紙は単語で繰り返すことができ、音符は曲で繰り返すことができるので、繰り返し要素を無視してはいけませんが、並べ替えることで同じ単語や曲が得られるわけではありませんので、順序を把握する必要があります。繰り返しが必要なオーダー要素が必要な場合は、NSArrayが必要です。 – ArtOfWarfare

13

要素の順序が重要であり、オブジェクトはセットに含まれているかどうかをテストでのパフォーマンスは、会員のためのconsideration-テストしているときは、アレイに代わるものとして注文したセットを使用することができます配列のメンバシップをテストするよりも時間がかかります。

+0

私はその文書を読んだ。少数のメンバーシップチェックは、ほとんどのメンバーシップが低いという理由で、あまりにも些細なことが原因であるようです。マーティンの答えは正しいと思います。まだ+1です。 –

関連する問題