-2

NSMutableSet文字列オブジェクトを保存するために使用する必要があります。たとえば、最小数から最大数まで正しい順序で保存したい:

1
2
3
4

これを行うとどうなりますか:

NSMutableSet *set = [[NSMutableSet alloc] init];
[set addObject:[NSString stringWithFormat:@"1"]];
[set addObject:[NSString stringWithFormat:@"2"]];
[set addObject:[NSString stringWithFormat:@"3"]];
[set addObject:[NSString stringWithFormat:@"4"]];
NSLog(@"set is %@",set);
[set release];

私が望んでいたものは得られませんが、代わりにこれ:

set is {(
    3,
    1,
    4,
    2
)}

だから、欲しい結果を得るためにそれらをソートする必要があると思いますか?しかし、実際には例が見つかりません。

多分誰かがこれについて私を助けることができますか?

ありがとう。

編集: 他には使えません。ちょうどNSMutableSetまたはNSSet

4

6 に答える 6

3

他の誰もが言ったように、NSSet定義によりソートされていません。ただし、使用する必要がある場合NSMutableSet 、次のようなものを使用して要素からソートされた配列を取得できます (この場合、要素が文字列であると仮定します)

NSArray* unsorted = [mySet allObjects];
NSArray* sorted = [unsorted sortedArrayUsingComparator: ^(NSString* string1, NSString* string2)
                   {
                       return [string1 localizedCompare: string2];
                   }];
于 2012-03-13T15:15:34.153 に答える
2

NSSet の特徴は、順序がないことです。

目的に合わせて NSMutableArray を使用する必要があります。

ここでコレクションについて読んでください。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Collections/Collections.html#//apple_ref/doc/uid/10000034-BBCFIHFH

于 2012-03-13T15:00:52.857 に答える
1

「NSSet」は順不同です。一意のアイテムのみを含むことを意図しています (重複するアイテムはありません)。NSSet の Apples ドキュメントから:

...オブジェクトの順序付けられていないコレクションへのプログラム インターフェイスを宣言します。

注文する場合は、NSMutableArrayまたはを選択してNSMutableOrderedSetください。

于 2012-03-13T15:05:30.110 に答える
1

これを試して

NSMutableSet *set = [[NSMutableSet alloc] init];
[set addObject:[NSString stringWithFormat:@"1"]];
[set addObject:[NSString stringWithFormat:@"2"]];
[set addObject:[NSString stringWithFormat:@"3"]];
[set addObject:[NSString stringWithFormat:@"4"]];

NSLog(@"%@",set); // Output (3,1,4,2,5) ... all objects

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES];
NSArray *sortedArray = [set sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]];

NSLog(@"%@",sortedArray);
于 2013-02-02T08:04:32.380 に答える
0

NSMutableSet定義上、順序付けされていません。ごめん。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSMutableSet_Class/Reference/NSMutableSet.html

于 2012-03-13T15:01:15.110 に答える
0

Sets are unordered by definition. You need an ordered set by using NSMutableOrderedSet or NSOrderedSet which are available in MacOS X 10.7 or later.

于 2012-03-13T15:01:47.363 に答える