以下为自定义的排序方式的实现
1 #import "Person+Compare.h" 2 3 @implementation Person (Compare) 4 -(NSComparisonResult)CompareByName:(Person*)aPerson 5 { 6 return [self.name compare:aPerson.name]; 7 } 8 -(NSComparisonResult)CompareByAge:(Person*)aPerson 9 { 10 if(self.age > aPerson.age) 11 return NSOrderedDescending; 12 else if (self.age < aPerson.age) 13 return NSOrderedAscending; 14 else 15 return NSOrderedSame; 16 } 17 @end
主函数测试:
#import <Foundation/Foundation.h>
#import "Person+Compare.h"
#import "Person.h"
int main(int argc, const char * argv[])
{
@autoreleasepool
{
NSMutableArray *personArray = [[NSMutableArray alloc]initWithCapacity:20];
[personArray addObject:[Person personWithName:@"Tom" andAge:20]];
[personArray addObject:[Person personWithName:@"Smith" andAge:21]];
[personArray addObject:[Person personWithName:@"Jhon" andAge:19]];
[personArray addObject:[Person personWithName:@"Bruth" andAge:24]];
//按姓名排序
NSMutableArray *sortedByName = [NSMutableArray arrayWithArray:[personArray sortedArrayUsingSelector:@selector(CompareByName:)]];
NSLog(@"%@",sortedByName);
//按年龄排序
NSMutableArray *sortedByAge = [NSMutableArray arrayWithArray:[personArray sortedArrayUsingSelector:@selector(CompareByAge:)]];
NSLog(@"%@",sortedByAge);
}
return 0;
}
测试结果为:
2015-08-18 18:03:26.997 可变数组的排序[2079:120917] ( "name=Bruth,age=24", "name=Jhon,age=19", "name=Smith,age=21", "name=Tom,age=20" ) 2015-08-18 18:03:26.998 可变数组的排序[2079:120917] ( "name=Jhon,age=19", "name=Tom,age=20", "name=Smith,age=21", "name=Bruth,age=24" ) Program ended with exit code: 0