专栏名称: Adrenine
iOS开发
目录
相关文章推荐
51好读  ›  专栏  ›  Adrenine

iOS笔记之数组排序

Adrenine  · 掘金  ·  · 2017-12-13 08:46

正文

###简单说明 数组排序比较多,我们讲一种比较常用的,这里涉及到一个知识点: NSComparisonResult:

typedef enum NSComparisonResult : NSInteger {
    NSOrderedAscending = -1L,
    NSOrderedSame,
    NSOrderedDescending
} NSComparisonResult;

文档解释
**NSOrderedAscending:**左边数据比右边小,可理解成增序 **NSOrderedSame:**相等 **NSOrderedDescending:**左边数据比右边大,可理解成降序


### 示例:

NSArray *array = @[@"Benz",@"BMW",@"Ferrari",@"Lamborghini"];

1、普通排序系统自带的升序

NSArray *sortedArray1 = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"普通排序:%@",sortedArray1);

2、逆转数组

NSArray *sortedArray2 = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1,id obj2) {
  //逆转
  return NSOrderedDescending;
}];
NSLog(@"逆转数组:%@",sortedArray2);

3、不逆转(相当于原数组)

NSArray *sortedArray3 = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1,id obj2) {
  //不逆转
  return NSOrderedAscending;
}];
NSLog(@"不逆转(原数据):%@",sortedArray3);

4、 升序排列

NSArray *sortedArray4 = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1,id obj2) {
  //升序
  NSComparisonResult result = [obj1 compare: obj2];
  return result;
}];
NSLog(@"升序排列:%@",sortedArray4);

5、降序排列

NSArray *sortedArray5 = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
  //降序
  NSComparisonResult result = [obj1  compare: obj2];
  return -result;
}];
NSLog(@"降序排列:%@",sortedArray5);

输出结果


###进阶: 数组里面存放模型,根据模型的某个属性值来对数组进行重新排序 1)、初始化一些车辆和数组:

Car *benz = [Car new];
benz.name = @"Benz";
benz.price = 2000.0;
    
Car *bmw = [Car new];
bmw.name = @"BMW";
bmw.price = 800;
    
Car *ferrari = [Car new];
ferrari.name = @"Ferrari";
ferrari.price = 1200;
    
Car *lamborghini = [Car new];
lamborghini.name = @"Lamborghini";
lamborghini.price = 12000;
    
NSMutableArray *array = @[benz,bmw,ferrari,lamborghini].mutableCopy;

2)、排序方法

/**
 对数组里存放model的某个属性对数组进行重新排序

 @param array 待排序数组
 @param increase 是否增序排列
 @param key 属性
 @return <#return value description#>
 */
-(NSArray *)sortArray:(NSArray *)array increase:(BOOL)increase byKey:(NSString *)key{
    
    array = [array sortedArrayUsingComparator:
             ^NSComparisonResult(Car *obj1, Car *obj2) {
                 NSComparisonResult result;
                 if






请到「今天看啥」查看全文