Student *stu1 = [Student studentWithname:@"丽丽" age:13 score:55];
Student *stu2 = [Student studentWithname:@"炎炎" age:14 score:57];
Student *stu3 = [Student studentWithname:@"娜娜" age:12 score:46];
Student *stu4 = [Student studentWithname:@"翩翩" age:11 score:56];
NSArray *stus = [NSArray arrayWithObjects:stu1 , stu2, stu3, stu4, nil];
NSComparisonResult (^scoreComparator)(id, id) = ^(id s1, id s2){
Student *stua = (Student *)s1;
Student *stub = (Student *)s2;
float result = [stua score] - [stub score];
NSComparisonResult r ;
if (result < 0) {
r = NSOrderedAscending;
} else if(result > 0){
r = NSOrderedDescending;
} else {
r = NSOrderedSame;
}
return r;
};
NSArray *sortArray = [stus sortedArrayUsingComparator:scoreComparator];
for (Student *stu in sortArray) {
NSLog(@"%@ : %.2f", [stu name], [stu score]);
}
NSComparisonResult (^nameComparetor)(id, id) = ^(id s1, id s2){
Student *st1 = (Student *)s1;
Student *st2 = (Student *)s2;
return [[st2 name] compare:[st1 name] ];
};
NSArray *nameArray = [stus sortedArrayUsingComparator:nameComparetor];
for (Student *s in nameArray) {
NSLog(@"%@ :%.2f", [s name], [s score]);
}
NSComparisonResult (^ageComparator)(id, id) = ^(id s1, id s2){
Student *sr1 = (Student *)s1;
Student *sr2 = (Student *)s2;
long result = [sr1 age] - [sr2 age];
NSComparisonResult e;
if (result < 0) {
e = NSOrderedAscending;
} else if (result > 0){
e = NSOrderedDescending;
} else {
e = NSOrderedSame;
}
return e;
};
NSArray *ageArray = [stus sortedArrayUsingComparator:ageComparator];
for (Student *sw in ageArray) {
NSLog(@"%@ : %ld", [sw name], [sw age]);
}