我正在尝试编写一个简单的函数 == "compareGPA"来比较两个学生的 GPA,然后使用选择器按降序对它们进行排序:[array sortUsingSelector:@selector(compareGPA:)];
我试过用两种不同的方式编写函数,但没有任何效果,
第一种方式:
+(NSComparisonResult) compareGPA: (Student *) OtherStudent{
Student *tmp =[Student new];
if ([OtherStudent getGpa] < [tmp getGpa]){
return (NSComparisonResult) tmp;
}
if([tmp getGpa] < [OtherStudent getGpa])
{ return (NSComparisonResult) OtherStudent; }
}
第二种方式:
+(NSComparisonResult) compareGPA: (Student *) OtherStudent{
NSComparisonResult res;
res = [[self getGpa] compare: [OtherStudent getGpa]];
return res;
Switch (res)
{
case NSOrderedAscending:
return NSOrderedDescending;
break;
case NSOrderedDescending:
return NSOrderedAscending;
break;
default:
return NSOrderedSame;
break;
}
}
输出:无
有什么建议吗??
最佳答案
你应该做你的caparison方法
+(NSComparisonResult) compareGPA: (Student *) OtherStudent
一个实例方法(不是类方法,+ 变成 -),这样它将接收者的 GPA 与 OtherStudent 的 GPA 进行比较),就像这样
-(NSComparisonResult) compareGPA: (Student *) OtherStudent {
// if GPA is a float int double ...
if ([OtherStudent getGpa] == [self getGpa]
return NSOrderedSame;
if ([OtherStudent getGpa] < [self getGpa]){
return NSOrderedAscending;
return NSOrderedDescending;
// if GPA is an object which responds to the compare: message
return [[self getGPA] compare:[OtherStudent getGPA]]
}
然后使用选择器 @selector(compareGPA:)
关于objective-c - 如何比较对象属性然后使用 ( sortusingselector :@selector)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8136564/