我想根据两个对象属性命令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;
}
答案 0 :(得分:1)
数字没有案例,请尝试使用compare:for GRADE
编辑后:你没有说出你有什么错误。你发布的代码甚至编译了吗?你的firstDescriptor中有一个拼写错误 - 在方法结束时有太多“]”。当你拿出比较时你可能已经解决了这个问题:(它不应该修复任何东西)。
答案 1 :(得分:1)
NSNumber不回复localizedCaseInsensitiveCompare:
。您只需要compare:
这个数字。
答案 2 :(得分:0)
删除localizedCaseInsensitiveCompare
NSSortDescriptor *firstDescriptor =
[[NSSortDescriptor alloc]
initWithKey:GRADE
ascending:YES]];