我有NSDictionary
NSDictionary *sort = @{@"key1": @[@"one", @"two"],
@"key2": @[@"o", @"t", @"p"]};
我希望通过array.count对他进行排序。 虽然决定使用排序泡泡,然后自订购后添加了元素std :: map。 但也许有一些标准的解决方案?
答案 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
}