私は次のNSArray
ものを持っておりNSDictionary
、より高い辞書値が一番上になるようにそれらを注文する必要があります。
調べてみましたが、NSDictionary をソートするための述語が見つかりません。どうすれば目的を達成できますか??
NSArray* result = @[@{ @"chest":[NSString stringWithFormat:@"%i",[chestR count]]},
@{@"back":[NSString stringWithFormat:@"%i",[backR count]]},
@{@"triceps":[NSString stringWithFormat:@"%i",[tricepR count]]},
@{@"biceps":[NSString stringWithFormat:@"%i",[bicepR count]]},
@{@"arms-other":[NSString stringWithFormat:@"%i",[armsR count]]},
@{@"legs":[NSString stringWithFormat:@"%i",[legsR count]]},
@{@"shoulders":[NSString stringWithFormat:@"%i",[shouldersR count]]},
@{@"abs":[NSString stringWithFormat:@"%i",[absR count]]},
@{@"cardio":[NSString stringWithFormat:@"%i",[cardioR count]]},
@{@"fitness":[NSString stringWithFormat:@"%i",[fitnessR count]]}
];
編集と解決策
これが私の問題を解決した方法です
NSArray* result = @[@{ @"chest":@"5"},
@{@"back":@"3"},
@{@"triceps":@"4"},
@{@"biceps":@"9"},
@{@"arms-other":@"1"},
@{@"legs":@"0"},
@{@"shoulders":@"2"},
@{@"abs":@"3"},
@{@"cardio":@"8"},
@{@"fitness":@"9"}
];
NSArray *sorted = [result sortedArrayUsingComparator:^(id obj1, id obj2){
NSArray *s1k = [obj1 allKeys];
NSInteger s1 = [obj1[[s1k objectAtIndex:0]] intValue];
NSArray *s2k = [obj2 allKeys];
NSInteger s2 = [obj2[[s2k objectAtIndex:0]] intValue];
if ( s1 > s2) {
return (NSComparisonResult)NSOrderedAscending;
} else if (s1 < s2) {
return (NSComparisonResult)NSOrderedDescending;
}
return (NSComparisonResult)NSOrderedSame;
}];