web-dev-qa-db-ja.com

NSDictionaryオブジェクトのNSArrayをソートする最良の方法は?

辞書の配列を並べ替えようと努力しています。

私の辞書には、関心、価格、人気などのいくつかの価値があります。

助言がありますか?

68
iOSDevil

NSSortDescriptorをこのように使用します。

NSSortDescriptor * descriptor = [[NSSortDescriptor alloc] initWithKey:@"interest" ascending:YES];
stories = [stories sortedArrayUsingDescriptors:@[descriptor]];
recent = [stories copy];

storiesは並べ替える配列です。 recentは、辞書値をソートした別の可変配列です。変更 @"interest"ソートする必要があるキー値。

ではごきげんよう

199
Warrior
[array sortUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"YOUR-KEY" ascending:YES], nil]];

本当に複数行に分割したくありません。それはすでに私にとって十分に単純です。

25
superarts.org

親から必要な子プロパティに移動するだけです。たとえば.

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"parent.child.child"  ascending:YES];
11
Ansari Awais

更新、sortUsingDescriptorsがsortArrayUsingDescriptorsになりました

だから、そのような:

items  = [items sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
4
dijipiji
array = [array sortedArrayUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"YOUR-KEY" ascending:YES], nil]];

配列に割り当てることを忘れないでください

0
Angus Lam

2つの辞書の関連フィールドを比較するソート関数を作成します。このバージョンがあれば、たとえばNSArray#sortedArrayUsingFunction:context:を使用して配列をソートできます。

NSArrayクラスリファレンス を参照してください

0
Stefan Arentz