获取NSDictionary键按其升序中的各自值排序

时间:2015-03-03 01:55:27

标签: ios objective-c sorting

我正按照Getting NSDictionary keys sorted by their respective values的建议对我的NSDictionary进行排序。比较器是否按照NSDictionary中值的升序或降序对键进行排序?我想按照值的升序显示键。换句话说,比较器块完成的排序操作是按升序还是降序排列? 谢谢。

2 个答案:

答案 0 :(得分:2)

结果数组将按升序排列,其中升序由比较器的行为决定。 (即,它可能与普通观察者所期望的不同。)

比较器接收两个对象,通常称为obj1obj2。如果它为给定的一对对象返回NSOrderedAscending,则obj1将在结果数组中的obj2之前进行排序。如果它返回NSOrderedDescending,则会在obj2之前订购obj1。如果它返回NSOrderedSame,那么obj1obj2将在结果数组中具有任意相对顺序。

顺便说一下,一个简单的测试程序可以给你答案。

答案 1 :(得分:2)

此代码按升序排列:

myArray = [myDict keysSortedByValueUsingComparator: ^(id obj1, id obj2) {
     if ([obj1 integerValue] > [obj2 integerValue]) {
          return (NSComparisonResult)NSOrderedDescending;
     }
     if ([obj1 integerValue] < [obj2 integerValue]) {
          return (NSComparisonResult)NSOrderedAscending;
     }
     return (NSComparisonResult)NSOrderedSame;
}];

要降序,请切换:

return (NSComparisonResult)NSOrderedDescending;

return (NSComparisonResult)NSOrderedAscending;