如何按数值对包含 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 进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

如何对包含 NSDictionary 的 NSArray 进行排序?

按字母顺序对 NSDictionary 值进行排序

Pandas:如何按一组序数值对数据框进行分组?

获取按其各自值排序的 NSDictionary 键

表格视图从 NSDictionary 加载,但不按字母顺序

c++数值58,随机泊松分布,分段线性分布