我有一本字典,其键由NSNumber组成。我正在使用keysSortedByValueUsingComparator,如下所示:

NSArray *sortedKeys = [self.platformDict  keysSortedByValueUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        return [(NSNumber*)obj2 compare:(NSNumber*)obj1];
    }];

但是,这是我得到的结果:
(lldb) po sortedKeys
(NSArray *) $1 = 0x0704bd20 <__NSArrayI 0x704bd20>(
100000,
250000,
1000000,
500000,
3000000,
2000000,
5000000,
10000000
)

哪个坏了。这是方法实现的错误,还是这里有其他问题?

最佳答案

也许您误解了keysSortedByValue:...方法的作用。它不对键进行排序(为此,您只对allKeys返回的数组进行排序),而是对值进行排序,然后将其顺序应用于键。

假设您有以下字典:

{"Orange": 1, "Apple": 3, "Peach": 2}

结果将是:
"Orange", "Peach", "Apple"

因为这与值(1、2、3)的排序顺序相对应。

07-28 02:06
查看更多