排序NSmutablearray根据double值包含对象

时间:2012-05-18 04:02:10

标签: objective-c arrays cocoa nsmutablearray sql-order-by

我想根据两个对象属性命令NSMutableArray包含对象,其中一个属性double类型第二个有NSString

我尝试使用此方法,但我得到了例外:

NSString * LASTNAME = @"lastName";
NSString * GRADE = @"grade";

NSSortDescriptor *lastDescriptor =
    [[NSSortDescriptor alloc]
        initWithKey:LASTNAME
          ascending:YES
           selector:@selector(localizedCaseInsensitiveCompare:)];

NSSortDescriptor *firstDescriptor =
    [[NSSortDescriptor alloc]
        initWithKey:GRADE
          ascending:YES
           selector:@selector(localizedCaseInsensitiveCompare:)]];

NSArray * descriptors =
   [NSArray arrayWithObjects:lastDescriptor, firstDescriptor, nil];
NSArray * sortedArray =
   [students sortedArrayUsingDescriptors:descriptors];

@interface Student : NSObject
{
    NSString * firstName;
    NSString * lastName;
    double grade;
}

3 个答案:

答案 0 :(得分:1)

数字没有案例,请尝试使用compare:for GRADE

编辑后:你没有说出你有什么错误。你发布的代码甚至编译了吗?你的firstDescriptor中有一个拼写错误 - 在方法结束时有太多“]”。当你拿出比较时你可能已经解决了这个问题:(它不应该修复任何东西)。

答案 1 :(得分:1)

NSNumber不回复localizedCaseInsensitiveCompare:。您只需要compare:这个数字。

答案 2 :(得分:0)

删除localizedCaseInsensitiveCompare

NSSortDescriptor *firstDescriptor =
    [[NSSortDescriptor alloc]
        initWithKey:GRADE
          ascending:YES]];