一、一般排序
1 // 排序 2 NSArray *arr = @[@"1",@"3",@"2",@"5"]; 3 NSArray *newarr = [arr sortedArrayUsingSelector:@selector(compare:)]; 4 NSLog(@"%@",newarr);
二、高级排序(数组中存的是对象,按对象的属性进行排序)
1 #import <Foundation/Foundation.h> 2 3 @interface Student : NSObject 4 5 @property (assign ,nonatomic) int age; 6 7 //提供一种比较方式 8 - (NSComparisonResult)compareStudentWithAge:(Student *)tempStudent; 9 10 11 @end 12 13 14 15 16 #import "Student.h" 17 18 @implementation Student 19 20 - (NSComparisonResult)compareStudentWithAge:(Student *)tempStudent 21 { 22 if (self.age>tempStudent.age) { 23 return NSOrderedDescending; 24 } 25 else if (self.age<tempStudent.age) 26 return NSOrderedAscending; 27 else 28 return NSOrderedSame; 29 } 30 31 -(NSString *)description 32 { 33 return [NSString stringWithFormat:@"age:%d",self.age]; 34 } 35 36 @end 37 38 #import <Foundation/Foundation.h> 39 40 #import "Student.h" 41 int main(int argc, const char * argv[]) { 42 @autoreleasepool { 43 44 Student *stu1 = [[Student alloc] init]; 45 stu1.age= 18; 46 Student *stu2 = [[Student alloc] init]; 47 stu2.age= 15; 48 Student *stu3 = [[Student alloc] init]; 49 stu3.age= 19; 50 51 NSArray *stuArr = @[stu1,stu2,stu3]; 52 NSArray *newStuArr = [stuArr sortedArrayUsingSelector:@selector(compareStudentWithAge:)]; 53 NSLog(@"%@",newStuArr); 54 } 55 return 0; 56 }
三、超级排序(数组中对象多属性)
1 #import <Foundation/Foundation.h> 2 3 @interface People : NSObject 4 5 @property (assign,nonatomic) NSInteger age; 6 @property (assign, nonatomic) NSInteger score; 7 @property (copy,nonatomic) NSString *name; 8 9 @end 10 11 12 13 14 15 #import "People.h" 16 17 @implementation People 18 19 20 - (NSString *)description 21 { 22 return [NSString stringWithFormat:@"age:%ld score:%ld name:%@", self.age,self.score,self.name]; 23 } 24 25 26 #import <Foundation/Foundation.h> 27 #import "People.h" 28 29 int main(int argc, const char * argv[]) { 30 @autoreleasepool { 31 32 People *stu1 = [[People alloc] init]; 33 stu1.age = 18; 34 stu1.score = 59; 35 stu1.name = @"bowen1"; 36 37 People *stu2 = [[People alloc] init]; 38 stu2.age = 18; 39 stu2.score = 59; 40 stu2.name = @"bowen2"; 41 42 People *stu3 = [[People alloc] init]; 43 stu3.age = 20; 44 stu3.score = 70; 45 stu3.name = @"bowen3"; 46 47 People *stu4 = [[People alloc] init]; 48 stu4.age = 16; 49 stu4.score = 62; 50 stu4.name = @"bowen4"; 51 52 People *stu5 = [[People alloc] init]; 53 stu5.age = 15; 54 stu5.score = 80; 55 stu5.name = @"bowen5"; 56 57 NSArray *arr = @[stu1,stu2,stu3,stu4,stu5]; 58 59 // 排序描述,数组按属性排序 NSSortDescriptor 60 NSSortDescriptor *ageSort = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:YES]; 61 NSSortDescriptor *scoreSort = [[NSSortDescriptor alloc] initWithKey:@"score" ascending:YES]; 62 NSSortDescriptor *nameScort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 63 64 //使用[排序描述]对数组进行排序 65 NSArray *newArr = [arr sortedArrayUsingDescriptors:@[ageSort,scoreSort,nameScort]]; 66 67 NSLog(@"%@",newArr); 68 69 } 70 return 0; 71 } 72 73 @end
原文:http://www.cnblogs.com/oc-bowen/p/5047806.html