gpt4 book ai didi

ios - 对 NSDictionary 进行降序排序。如何使用 `compare:options:` 选择器发送选项?

转载 作者:可可西里 更新时间:2023-11-01 03:26:43 25 4
gpt4 key购买 nike

我正在尝试对 NSDictionary 进行排序。

来自Apple docs我看到您可以使用 keysSortedByValueUsingSelector:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:63], @"Mathematics",
[NSNumber numberWithInt:72], @"English",
[NSNumber numberWithInt:55], @"History",
[NSNumber numberWithInt:49], @"Geography",
nil];

NSArray *sortedKeysArray = [dict keysSortedByValueUsingSelector:@selector(compare:)];

给出:

// sortedKeysArray contains: Geography, History, Mathematics, English

但我想要:

// sortedKeysArray contains: English, Mathematics, History, Geography

我读到您可以使用 compare:options:NSStringCompareOptions 来更改比较以在另一个方向进行比较。

但是我不明白您如何在选择器中发送 compare:options:带有选项

我想做这样的事情:

NSArray *sortedKeysArray = [dict keysSortedByValueUsingSelector:@selector(compare:options:NSOrderDescending)];

我应该如何切换比较的顺序?

相关: https://discussions.apple.com/thread/3411089?start=0&tstart=0

最佳答案

选项 1:使用比较器反向调用 -compare::(感谢 Dan Shelly!)

NSArray *blockSortedKeys = [dict keysSortedByValueUsingComparator: ^(id obj1, id obj2) {
// Switching the order of the operands reverses the sort direction
return [objc2 compare:obj1];
}];

只需反转降序和升序返回语句,您应该得到您想要的。

选项 2:反转您拥有的数组:

参见 How can I reverse a NSArray in Objective-C?

关于ios - 对 NSDictionary 进行降序排序。如何使用 `compare:options:` 选择器发送选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15825300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com