如何按数值对包含 NSDictionary 的 NSMutableArray 进行排序?
Posted
技术标签:
【中文标题】如何按数值对包含 NSDictionary 的 NSMutableArray 进行排序?【英文标题】:How can I sort an NSMutableArray containing NSDictionary's by numeric values? 【发布时间】:2012-03-20 17:38:29 【问题描述】:基本上我有一个NSMutableArray
,其中包含几个NSDictionaries
。我希望根据每个 NSDictionaries
中出现的数值之一对这个数组进行排序。
例如,如果这些都是NSDictionaries
:
dict_1
some_val, @"blah"
some_other_val, 135
dict_2
some_val, @"blah"
some_other_val, 10
dict_3
some_val, @"blah"
some_other_val, 35
然后我想根据"some_other_val"
的值对它们进行排序。我尝试使用排序描述符来做到这一点,但是我给我的结果是错误的。这是我用来对数组进行排序的代码:
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"some_other_val" ascending:NO];
[myArray sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
正如我所提到的,这并没有提供我期望看到的结果。排序结果如下:
Before:
135
10
35
After:
35
135
10
据我所知,它只是试图对值进行排序,就好像它们是字符串一样。我在网上浏览了一下,看看我是否能找到解决问题的方法,但是我有点死胡同了。
请问有人可以提供一些建议吗?
【问题讨论】:
您可以随意更改“some_other_val”的类型吗? 我不确定我是否完全理解您的意思,但是如果需要,我可以对 NSDictionary 进行更改。 【参考方案1】:我认为有几种形式可以做到这一点,第一种选择:
我认为,如果您将 some_other_val 作为 NSNumber 添加到字典中,您可以获得所需的结果,而无需更改其余部分。
我会寻找其他人。
【讨论】:
user1118321 给了您另一个很棒的提示,您可以使用自定义排序功能进行排序。【参考方案2】:为什么不只使用其他方法之一,例如 sortUsingFunction:context:
或 sortUsingComparator
:?
【讨论】:
以上是关于如何按数值对包含 NSDictionary 的 NSMutableArray 进行排序?的主要内容,如果未能解决你的问题,请参考以下文章