私は奇妙な誤解を受けているに違いない...
検討:
NSSet * mySet = [NSSet setWithArray:@[@1, @9, @3]] ;
NSOrderedSet * mySortedSet = [NSOrderedSet orderedSetWithSet:mySet] ;
for (NSNumber * n in mySet) {
NSLog(@"unsorted: %@", n) ;
}
for (NSNumber * n in mySortedSet) {
NSLog(@"--sorted: %@", n) ;
}
そしてコンソールログ:
2014-05-05 20:38:46.645 WoGa[50557:60b] unsorted: 9
2014-05-05 20:38:48.675 WoGa[50557:60b] unsorted: 1
2014-05-05 20:38:49.875 WoGa[50557:60b] unsorted: 3
2014-05-05 20:38:54.277 WoGa[50557:60b] --sorted: 9
2014-05-05 20:38:55.544 WoGa[50557:60b] --sorted: 1
2014-05-05 20:38:56.684 WoGa[50557:60b] --sorted: 3
は?それはどのように「注文」されていますか?必要に応じて自分自身を並べ替えることに問題はありませんが、NSOrderedSet とは正確には何ですか?
の要素の順序mySet
が予測できないことは受け入れられます。しかし、何らかの順序でソートし[NSOrderedSet orderedSetWithSet:mySet]
ない場合、何が達成されるはずですか?
ドキュメントから:
要素の順序が重要であり、オブジェクトがセットに含まれているかどうかをテストする際のパフォーマンスが考慮される場合は、配列の代わりに順序付きセットを使用できます。配列のメンバーシップのテストは、セットのメンバーシップのテストよりも遅くなります。
繰り返しNSOrderedSet orderedSetWithSet:
ますが、あなたに提供することになっている注文は何ですか?