0

我想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;
}
4

3 回答 3

1

NSNumber 不响应localizedCaseInsensitiveCompare:。你想要的只是简单compare:的数字。

于 2012-05-18T04:10:40.367 回答
1

数字没有大小写,尝试使用 compare: for GRADE

编辑后:你没有说你得到了什么错误。您发布的代码甚至编译了吗?您的 firstDescriptor 中有错字——方法末尾的“]”太多了。当您取出比较时,您可能已经解决了这个问题:(不应该解决任何问题)。

于 2012-05-18T04:10:35.507 回答
0

删除localizedCaseInsensitiveCompare

NSSortDescriptor *firstDescriptor =
    [[NSSortDescriptor alloc]
        initWithKey:GRADE
          ascending:YES]];
于 2012-05-18T05:21:09.507 回答