我正按照Getting NSDictionary keys sorted by their respective values的建议对我的NSDictionary进行排序。比较器是否按照NSDictionary中值的升序或降序对键进行排序?我想按照值的升序显示键。换句话说,比较器块完成的排序操作是按升序还是降序排列? 谢谢。
答案 0 :(得分:2)
结果数组将按升序排列,其中升序由比较器的行为决定。 (即,它可能与普通观察者所期望的不同。)
比较器接收两个对象,通常称为obj1
和obj2
。如果它为给定的一对对象返回NSOrderedAscending
,则obj1
将在结果数组中的obj2
之前进行排序。如果它返回NSOrderedDescending
,则会在obj2
之前订购obj1
。如果它返回NSOrderedSame
,那么obj1
和obj2
将在结果数组中具有任意相对顺序。
顺便说一下,一个简单的测试程序可以给你答案。
答案 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;