【问题标题】:How can I sort an NSMutableArray containing NSDictionary's by numeric values?如何按数值对包含 NSDictionary 的 NSMutableArray 进行排序?
【发布时间】: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 进行更改。

标签: objective-c sorting nsmutablearray nsdictionary nssortdescriptor


【解决方案1】:

我认为有几种形式可以做到这一点,第一种选择:

我认为,如果您将 some_other_val 作为 NSNumber 添加到字典中,您可以获得所需的结果,而无需更改其余部分。

我会寻找其他人。

【讨论】:

  • user1118321 给了您另一个很棒的提示,您可以使用自定义排序功能进行排序。
【解决方案2】:

为什么不只使用其他方法之一,例如 sortUsingFunction:context:sortUsingComparator:?

【讨论】:

    猜你喜欢
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多