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"
每个键代表年份以及1R或2R。
对于 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]
。 (注意否定,交换NSOrderedAscending
和NSOrderedDescending
。)以上是关于Objective-C 字典键按降序排序的主要内容,如果未能解决你的问题,请参考以下文章