iOSで整数の辞書をソートできるかどうか疑問に思っていますか? 以前の例/質問を見ると、ほとんどの人が int の配列または辞書の配列 (int を含む) をソートしているようです。
ただし、次の構造の辞書があるとしましょう。
{numWords = 12, numPhotos = 15, numFriends = 8}
キーが同じではないので、ソート記述子 (キーで初期化) を使用できないようです。したがって、整数をソートして関連するキーをそのままにしておく方法はありますか?
iOSで整数の辞書をソートできるかどうか疑問に思っていますか? 以前の例/質問を見ると、ほとんどの人が int の配列または辞書の配列 (int を含む) をソートしているようです。
ただし、次の構造の辞書があるとしましょう。
{numWords = 12, numPhotos = 15, numFriends = 8}
キーが同じではないので、ソート記述子 (キーで初期化) を使用できないようです。したがって、整数をソートして関連するキーをそのままにしておく方法はありますか?
オブジェクトが一意であると仮定します。
1) allValuesの配列を辞書に問い合わせる
2) 値の配列をソートする
3) valueForKeyがないため、値ごとに高速列挙またはenumerateKeysAndObjectsUsingBlock:を使用して適切なキーを見つけます。
辞書はソートできません。
つまり、キーを含む配列と関連する値を含む配列の 2 つの並べ替えられた配列を使用できます。値の順序で並べ替えます。
NSDictionary *d = @{
@"numWords": @12,
@"numPhotos": @15,
@"numFriends": @8
};
NSComparisonResult (^cmp)(id, id) = ^(id obj1, id obj2) {
return [obj1 compare:obj2];
}
NSArray *keys = [d keysSortedByValueUsingComparator:cmp]
NSMutableArray *vals = [[id allValues] mutableCopy];
[vals sortUsingComparator:cmp];