0

私は次の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;
    }];
4

1 に答える 1

0

定義上、辞書はソートされません。

配列に変換できます。NSDictionary インスタンス メソッド -allValues は、そうするのに適している場合があります。

次に、カスタムの並べ替え記述子を使用して、新しい配列を並べ替えることができます。これにより、希望どおりに並べ替えることができます。

于 2013-07-23T21:19:17.813 に答える