web-dev-qa-db-ja.com

辞書を含む配列をソートする方法は?

辞書を含む配列があります。では、辞書のキー値に従って配列を並べ替えるにはどうすればよいですか?

32
Ankit Vyas

配列内のすべての要素が特定のキーを含むディクショナリである場合、並べ替え記述子を使用して配列を並べ替えることができます。たとえば、すべての要素が「名前」と呼ばれるキーを含む辞書である場合:

NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name"
    ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName];
NSArray *sortedArray = [array sortedArrayUsingDescriptors:sortDescriptors];
86
user557219

これを実現するもう1つの方法は、sortedArrayUsingComparator:メソッドを使用することです。

NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    return [[obj1 valueForKey:@"value"] compare:[obj2 valueForKey:@"value"]];
}];
10
dariaa

ソートされた要素のプロパティがすでにデータ構造に付属しているソートされた辞書を使用してみませんか?

ぜひチェックしてください こちら

お役に立てれば。

1
evandrix

Bavariousによる上記の共有された回答は私を助けました。もう1つ追加したいだけです。可変配列をソートしたい場合は、以下のコードのようなものを使用してください

NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName];
NSMutableArray *sortedArray = [[NSMutableArray sortedArrayUsingDescriptors:sortDescriptors]mutableCopy];
0
Jerin