2011-12-22 4 views
5

可能性の重複:
What is the most efficient way to sort an NSSet?objective-c NSStringsのNSMutableSetをソートしますか?

私は現在、文字列のリストを以下にNSMutableSetを持っています。例えば:

{ "A" @、 "G" @ "F" @ "E" @ "D" @ "C"、、、、@}誰かが、私はこれらを並べ替えることができる方法を教えてくださいすることができアルファベット順の値ですか? sortedArrayUsingDescriptors:を使ってこれを行う方法はありますか?

+1

http://stackoverflow.com/questions/1351182/how-to-sort-a-nsarray-alphabetically –

+1

上記の投稿のセレクタはNSSetで利用できます。それはもうセットではないことに注意してください。配列は順序付けされ、集合は配列されません。 –

+0

私はこれが**その質問のdupではないと言います。具体的には、この他のより一般的な質問は、この特定のエッジケースでディスクリプタを作成する方法についての助けとなるものではありません。最初のことは「しかしオブジェクトのキーに基づいて、オブジェクト自体に基づいてソートしたい "もちろん、答えは「自己」キーがそれをあなたに与えることですが、キー値コーディングが前後にあることを知らない人にとっては、それは特に明白ではありません。 :-) – dgatwood

答えて

15

確かに、あなたはその方法を使用することができます。

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

これは単にキー「説明」(NSStringのは-description方法を提供する指定新しいソート記述子を作成します文字列を返します)。その後、そのソート記述子を含む配列をパラメータとして-sortedArrayUsingDescriptors:に渡します。これを任意のNSSetに送信できます。

+0

"self"をキーとして渡すと、同じ結果が得られます。私は説明キーを要求することによって、あなたは実際に余分な仕事をしていると思います。具体的には、要求されたキーの値についてdescriptionメソッドを呼び出すことによって、ソートに使用する値を取得すると思いますので、実際は説明の説明を取っています)。 – dgatwood

+0

@dgatwoodあなたは私にそれを打つ。私はちょうどNSStringsの配列をソートするためにいくつかのコードを書いて、キーに@ "self"を置くことに決めました。代替品があるかどうか確認するためにここに来ました。 – pnizzle

+0

@dgatwoodあなたは間違っていませんが、* descriptionを使用しています*配列に文字列ではないオブジェクトが含まれていても動作するという点で少し頑強です。 OPがオブジェクトが文字列であると指定したので、それが本当に望ましいかどうかは意見の問題ですが、同時に余分な作業の量はごくわずかです。 – Caleb

-2

NSSetsは順序付けられていないコレクションです。ソートされたコンテナが必要な場合は、NSArrayを使用します。

1

私はこの質問Sorting NSSetがあなたの質問に対する答えであると仮定します。クリックのハードのために...

[mySet sortedArrayUsingDescriptors:descriptors]; 
関連する問題