NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"1",@"3",@"5",@"40" nil];
NSArray *sorteArray = [array sortedArrayUsingComparator:^(id obj1, id obj2){
if ([obj1 integerValue] > [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedDescending;
}
if ([obj1 integerValue] < [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedAscending;
}
return (NSComparisonResult)NSOrderedSame;
}];
NSLog(@"%@",sorteArray); //从小到大
NSArray *array2 = [array sortedArrayUsingComparator:^(id obj1, id obj2){
if ([obj1 integerValue] > [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedAscending;
}
if ([obj1 integerValue] < [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedDescending;
}
return (NSComparisonResult)NSOrderedSame;
}];
NSLog(@"%@",array2);
以上包含了有从小到大的排序,也包含有大到小的排序
如果是针对字符串的排序,有更好的方法,
NSArray *ary = @[@"a3",@"a1",@"a2",@"a10",@"a24"];
NSLog(@"%@",ary);
NSArray *myary = [ary sortedArrayUsingComparator:^(NSString * obj1, NSString * obj2){
return (NSComparisonResult)[obj1 compare:obj2 options:NSNumericSearch];
}];
NSLog(@"%@",myary);
结果
( a3,a1, a2, a10, a24 )
( a1, a2,a3, a10, a24 )
NSArray *ary = @[@"a3",@"a1",@"a2",@"a24",@"a14"];
NSLog(@"%@",ary);
NSSortDescriptor *sd1 = [NSSortDescriptor sortDescriptorWithKey:nil ascending:NO];//yes升序排列,no,降序排列
NSArray *myary = [ary sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sd1, nil]];//注意这里的ary进行排序后会生产一个新的数组指针,myary,不能在用ary,ary还是保持不变的。
NSLog(@"%@",myary);
// (a3, a1, a2,a24,a14)
// (a3, a24, a2, a14, a1)
[ary sortedArrayUsingSelector:@selector(compare:)];//这个是一直默认升序