2012-03-13 2 views
-2

私は文字列オブジェクトを格納するためにNSMutableSetを使用する必要があります。私は、例えば、最小から最大の番号に、正しい順序でそれらを格納するためにWAN: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 
)} 

だから私はそれらを欲しい結果を得るために並べ替える必要があると思いますか?しかし、実際に私は例を見つけることができません。

多分、誰かが私にこれを助けることができましたか?

ありがとうございました。

編集: 私はelseを使用できません。ちょうどNSMutableSetまたはNSSet

+0

を試してみてください代わりにNSMutableOrderedSetまたはNSOrderedSetを使用しますか? –

答えて

0

セットは順序が定義されていません。 MacOS X 10.7以降で使用可能なNSMutableOrderedSetまたはNSOrderedSetを使用して順序付きセットが必要です。

1

「NSSet」は順序付けされていません。ユニークなアイテムのみを含むことを意図しています(重複するアイテムはありません)。 NSSetのリンゴのドキュメントから:

...オブジェクトの順不同コレクションへのプログラム・インタフェースを宣言します。

ご希望の場合は、NSMutableArrayまたはNSMutableOrderedSetにお進みください。

+0

私はelseを使うことができません。ちょうどNSMutableSetまたはNSSet – Streetboy

3

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

NSArray* unsorted = [mySet allObjects]; 
NSArray* sorted = [unsorted sortedArrayUsingComparator: ^(NSString* string1, NSString* string2) 
        { 
         return [string1 localizedCompare: string2]; 
        }]; 
1

なぜcouldnこの

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); 
+0

@ "description"はどのように記述しましたか?それは何ですか? – Developer

関連する問題