如何按数值对包含NSDictionary的NSMutableArray进行排序?

时间:2012-03-20 17:38:30

标签: objective-c sorting nsmutablearray nsdictionary nssortdescriptor

基本上我有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

据我所知,它只是试图将值排序,就好像它们是字符串一样。我在网上看了看是否能找到问题的解决方案,但是我有点死路一条。

请有人可以提供一些建议吗?

2 个答案:

答案 0 :(得分:2)

为什么不使用sortUsingFunction:context:sortUsingComparator等其他方法之一:?

答案 1 :(得分:2)

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

我认为如果你将some_other_val作为NSNumber添加到字典中,你可以得到你想要的结果,而不需要改变其余部分。

我会找其他人。