<1>描述:字符串对象都可以排序
// 创建描述对象就是对数组排序的,它可以把数组中元素的某个属性作为key 进行升序或者降序的排列,每一个NSSortDescriptor描述就是一个排序条件
// 描述排序其实就是可以按照条件去升降排序
// key:就是你要排序的对象
// ascending:是升序还是降序
//<1>创建数组
NSMutableArray *ms = [[NSMutableArray alloc]initWithObjects:@"kkk", @“abg”,nil];
//<2>创建描述对象:如果说我们这个数组中存储是一个个字符串,那么我们这块的key值就应该写成nil或者@“self”,如果是对象则写成对象的属性即可
NSSortDescriptor *mm = [[NSSortDescriptor alloc]initWithKey:@"self" ascending:YES];
NSSortDescriptor *nn = [[NSSortDescriptor alloc]initWithKey:@"name" ascending:YES];
//<3>使用描述方法满足以上描述对象的条件对上面的数组进行排序
[ms sortUsingDescriptors:@[mm]];
NSLog(@"%@",ms);
<4>可变数组的描述方法是[数组名 sortUsingDescriptors:@“ 描述对象的名字 ”]
<5>不可变数组的描述方法是,首先得创建一个新的数组来承接
NSArray *array = [数组名 sortedArrayUsingDescriptors:@“ 描述对象的名字 ”]
<2>compare使用这个方法给数组排序
//<1>创建数组
NSArray *kkl = @[@“4”,@"3",@"5",@"1"];
//<2>数组调用compare排序方法,这个方法默认是升序的,
[kkl sortedArrayUsingSelector:@selector(compare:)];
<3>我们也可以重写这个方法,按照自己的条件进行排序
//按姓名进行对比:compare:方法是字符串拥有的方法
自定义方法比较方法- (NSComparisonResult)compareByName: (Student *)other{
return [self.name compare:other.name];//因为属性是个字符串,所以在这块可以用compare直接比较,然后返回比较结果就行了,
}
//按年龄进行对比
- (NSComparisonResult)compareByAge: (Student *)other{
if (self.age > other.age) {//基本类型对比的话就是直接对比的
return 1;
}else if (self.age < other.age){
return -1;
}else{
return 0;
}
}
枚举排序: