草庐IT

objective-c - keysSortedByValueUsingComparator 没有给出正确排序的数组

coder 2023-09-26 原文

我有一个字典,它的键由 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)。

关于objective-c - keysSortedByValueUsingComparator 没有给出正确排序的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12683332/

有关objective-c - keysSortedByValueUsingComparator 没有给出正确排序的数组的更多相关文章

随机推荐