我试图对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,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:反转您拥有的阵列:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。