NSArray排序

来源:互联网 发布:谁的行书比较好练 知乎 编辑:程序博客网 时间:2024/05/29 18:25

- (NSArray<ObjectType> *)sortedArrayUsingFunction:(NSInteger (*)(ObjectType, ObjectType,void * __nullable))comparator context:(nullablevoid *)context;

- (NSArray<ObjectType> *)sortedArrayUsingFunction:(NSInteger (*)(ObjectType, ObjectType,void * __nullable))comparator context:(nullablevoid *)context hint:(nullableNSData *)hint;

- (NSArray<ObjectType> *)sortedArrayUsingSelector:(SEL)comparator;


第一种 排序方法 利用sortedArrayUsingFunction 调用 对应方法customSort,这个方法中的obj1和obj2分别是指数组中的对象。

NSInteger customSort(id obj1, id obj2,void* context){if ([obj1 integerValue] > [obj2 integerValue]) {    return (NSComparisonResult)NSOrderedDescending;}if ([obj1 integerValue] < [obj2 integerValue]) {    return (NSComparisonResult)NSOrderedAscending;}return (NSComparisonResult)NSOrderedSame;}

NSArray *sortArray = [[NSArray alloc] initWithObjects:@"1",@"3",@"4",@"7",@"8",@"2",@"6",@"5",@"13",@"15",@"12",@"20",@"28",@"",nil];

    //排序前

    NSMutableString *outputBefore = [[NSMutableString alloc] init];

    for(NSString *str in sortArray){

        [outputBefore appendFormat:@",%@",str];

         }

         NSLog(@"排序前:%@",outputBefore);

         

         NSArray *array = [sortArray sortedArrayUsingFunction:customSort context:nil];

         

         NSMutableString *outputAfter = [[NSMutableString alloc] init];

         for(NSString *str in array){

             [outputAfter appendFormat:@",%@",str];

              }

         NSLog(@"排序后:%@",outputAfter);


//第二种,利用数组的sortedArrayUsingComparator调用 NSComparator ,obj1和obj2指的数组中的对象

NSComparator cmptr = ^(id obj1, id obj2){ if ([obj1 integerValue] > [obj2 integerValue]) {        return (NSComparisonResult)NSOrderedDescending;    }     if ([obj1 integerValue] < [obj2 integerValue]) {        return (NSComparisonResult)NSOrderedAscending;    }    return (NSComparisonResult)NSOrderedSame;};NSArray *sortArray = [[NSArray alloc] initWithObjects:@"1",@"3",@"4",@"7",@"8",@"2",@"6",@"5",@"13",@"15",@"12",@"20",@"28",@"",nil];//排序前NSMutableString *outputBefore = [[NSMutableString alloc] init];for(NSString *str in sortArray){[outputBefore appendFormat:@"%@", str];}NSLog(@"排序前:%@",outputBefore);//排序后NSArray *array = [sortArray sortedArrayUsingComparator:cmptr];NSMutableString *outputAfter = [[NSMutableString alloc] init];for(NSString *str in array){[outputAfter appendFormat:@"%@", str];}NSLog(@"排序后:%@",outputAfter);

第三种 利用sortUsingDescriptors调用NSSortDescriptor

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"price"    ascending:NO];//其中,price为数组中的对象的属性,这个针对数组中存放对象比较更简洁方便NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:&sortDescriptor count:1];[_totalInfoArray sortUsingDescriptors:sortDescriptors];

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 套了牙套的牙疼怎么办 我鼻子上有很多螨虫和黑头怎么办 鱼刺卡在喉咙怎么办最有效的办法 脚被蚊子咬了很痒怎么办 好压7z密码忘了怎么办 4g卡显示2g网络怎么办 过塑机把纸吞了怎么办 红米1s开不了机怎么办 跟老婆吵架闹的要离婚该怎么办 充了q币没有到账怎么办 9个月宝宝吃了盐怎么办 红米4x开不了机怎么办 鱼身上有红斑像出血了怎么办 草鱼身上有红斑像出血了怎么办 宝宝屁眼红的破皮了怎么办 孩子身上起红疙瘩很痒怎么办 久而不射,但软了怎么办 盆底综合肌力1级怎么办 头发掉的厉害怎么办吃什么好 给蜂蛰了肿了痒怎么办 小米手环2没电了怎么办 小米手环2不亮了怎么办 红米3s无限重启怎么办 乐视手机1s卡顿怎么办 老公出轨了怎么办你会选择离婚吗 c盘和d盘换换了怎么办 晚上2点到3点醒怎么办 红米3s变砖了怎么办 6s锁屏密码忘了怎么办 怀孕9个月了胃疼怎么办 怀孕6个月了胃疼怎么办 孕妇胃疼怎么办4个月了 25岁欠了5万块钱怎么办 感冒嗓子疼怎么办最简单的方法 和老婆离婚了我的心好痛怎么办 4s店不给退定金怎么办 教你闪腰了后该怎么办 coolpad酷派手机开不了机怎么办 苹果5s黑屏开不了机怎么办 苹果4s的屏坏了怎么办 苹果6手机充电口接触不良怎么办