NSDictionary按数组值排序?

时间:2016-02-21 21:20:51

标签: objective-c sorting nsdictionary

我有NSDictionary

NSDictionary *sort = @{@"key1": @[@"one", @"two"],
                        @"key2": @[@"o", @"t", @"p"]};

我希望通过array.count对他进行排序。 虽然决定使用排序泡泡,然后自订购后添加了元素std :: map。 但也许有一些标准的解决方案?

1 个答案:

答案 0 :(得分:0)

我不认为您可以对字典中的键进行排序,但是如果您想根据其值数组的数量按顺序排列键,则可以执行以下操作:

NSArray *sortedKeysArray = [dictionary keysSortedByValueUsingComparator: ^(NSArray *obj1, NSArray *obj2) {
            if (obj1.count > obj2.count) {
                return (NSComparisonResult)NSOrderedDescending;
            }
            if (obj1.count < obj2.count) {
                return (NSComparisonResult)NSOrderedAscending;
            }
            return (NSComparisonResult)NSOrderedSame;
        }];

然后,一旦你有了按键,就可以像这样迭代它们:

for (NSString *key in sortedKeysArray) {
    NSArray *array = [dictionary objectForKey:key]
    // Do something now that you have the arrays in order from smallest to largest
}