Objective-C 字典键按降序排序

Posted

技术标签:

【中文标题】Objective-C 字典键按降序排序【英文标题】:Objective-C Dictionary keys sorting in descending order 【发布时间】:2015-04-13 14:24:55 【问题描述】:

我有一个像这样的无序字典:

@ @"20101R" : @"value1", 
   @"20102R" : @"value2", 
   @"20131R" : @"value3", 
   @"20111R" : @"value4", 
   @"20122R" : @"value5" 

每个键代表年份以及1R2R

对于 UITableView,我希望将“键”作为标题,将“值”作为副标题,如下所示:

最新键值-> 最旧键值

title : 20131R
subtitle : value3

title : 20122R
subtitle : value5

title : 20111R
subtitle : value4

title : 20102R
subtitle : value2

title : 20101R
subtitle : value1

你能帮我把这个类似数字的字符串按降序排序吗? 最简单的方法是什么? 提前谢谢你。

【问题讨论】:

无法订购字典。保留一个单独的数组来保存字典键,按照您希望它们显示的顺序。 【参考方案1】:

拔出钥匙
NSArray *keysArray = [dictionary allKeys];

然后对数组进行排序:

NSArray *sortedArray = [keysArray sortedArrayUsingComparator:^NSComparisonResult(NSString*  _Nonnull obj1, NSString*  _Nonnull obj2) 
    return obj1 < obj2;
];

【讨论】:

那是怎么下降的?您要么需要反转结果数组,要么使用 NSSortDescriptor。 @dgatwood 是的!我已经更新了排序方法! 我认为您不能以这种方式安全地在 Objective-C 对象指针上使用比较运算符。但是,您可以使用-[obj1 compare:obj2]。 (注意否定,交换NSOrderedAscendingNSOrderedDescending。)

以上是关于Objective-C 字典键按降序排序的主要内容,如果未能解决你的问题,请参考以下文章

将字典值按降序排序[重复]

Ruby - 按值按降序排序哈希值

按特定键的降序对字典列表进行排序[重复]

按降序排序数组(NSArray)

按降序对数组进行排序的更好方法

如何按降序排序?