値でソートされた辞書キーの配列を取得できますが、辞書キーでソートされた値の配列を取得するにはどうすればよいですか?私は運がなくてどこでも探していました。助けていただければ幸いです。
質問する
29209 次
4 に答える
45
これはうまくいくかもしれません:
NSArray * sortedKeys = [[dict allKeys] sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)];
NSArray * objects = [dict objectsForKeys: sortedKeys notFoundMarker: [NSNull null]];
またはSwiftで
let objects = dict.keys.sorted().flatMap{ dict[$0] }
また
let objects = dict.sorted{ $0.0 < $1.0 }.map{ $1 }
…そしてそれがあなたがSwiftで開発を始めるべき理由です
于 2011-09-30T15:11:59.487 に答える
2
1つの方法は、ソートされた辞書キーの配列を作成し、キーの配列に基づいて値の別の配列を作成することです。
//Construct array of sorted keys
NSArray keyarray = ... //etc
NSMutableArray valuearray = [[NSMutableArray alloc] init];
for (id key in keyarray) {
[valuearray addObject:[dict objectForKey:key]];
}
于 2011-09-30T15:13:40.283 に答える
2
私の経験ではNSDictionary
、キーによる並べ替えはあまり役に立ちません。それらはソートされlogging
たNSDictionary
ように見えますが、テーブルビューに配置する必要がある場合は、もはや順序付けられていません。
キーをプロパティに格納してから、のキーの順序に従ってオブジェクトNSArray
をクエリすることをお勧めします。NSDictionary
NSArray
于 2012-07-28T03:11:45.717 に答える
1
これを実現するために、NSDictionaryにカテゴリを作成しました。
@implementation NSDictionary (Extra)
-(NSArray *) sortedKeys {
return [[self allKeys] sortedArrayUsingSelector:@selector(compare:)];
}
-(NSArray *) allValuesSortedByKey {
return [self objectsForKeys:self.sortedKeys notFoundMarker:[NSNull null]];
}
-(id) firstKey {
return [self.sortedKeys firstObject];
}
-(id) firstValue {
return [self valueForKey: [self firstKey]];
}
@end
于 2014-04-23T08:51:32.773 に答える