辞書を含む配列があります。では、辞書のキー値に従って配列を並べ替えるにはどうすればよいですか?
配列内のすべての要素が特定のキーを含むディクショナリである場合、並べ替え記述子を使用して配列を並べ替えることができます。たとえば、すべての要素が「名前」と呼ばれるキーを含む辞書である場合:
NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name"
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName];
NSArray *sortedArray = [array sortedArrayUsingDescriptors:sortDescriptors];
これを実現するもう1つの方法は、sortedArrayUsingComparator:
メソッドを使用することです。
NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [[obj1 valueForKey:@"value"] compare:[obj2 valueForKey:@"value"]];
}];
Bavariousによる上記の共有された回答は私を助けました。もう1つ追加したいだけです。可変配列をソートしたい場合は、以下のコードのようなものを使用してください
NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName];
NSMutableArray *sortedArray = [[NSMutableArray sortedArrayUsingDescriptors:sortDescriptors]mutableCopy];