美文网首页
OC数组排序

OC数组排序

作者: toobai | 来源:发表于2017-11-14 12:09 被阅读0次

 1.使用NSSortDescriptor对象进行数组排序

//创建一个数组

NSArray *array = @[@"one", @"two", @"three", @"four", @"six"];

//创建一个排序条件,也就是一个NSSortDescriptor对象

//其中第一个参数为数组中对象要按照什么属性来排序(比如自身、姓名,年龄等)

//第二个参数为指定排序方式是升序还是降序

//ascending  排序的意思,默认为YES 升序

NSSortDescriptor *des = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES];

NSArray *newArray = [array sortedArrayUsingDescriptors:@[des]];

NSLog(@"%@",newArray);

2.使用sortedArrayUsingDescriptors:方法实现把多个排序条件放到数组中,实现多条件排序,按数组先后顺序,先加入的优先级高

//创建一个Person类

Person *p1 = [[Person alloc] initWithName:@"zhonger" age:@"19"];

Person *p2 = [[Person alloc] initWithName:@"zhubada" age:@"11"];

Person *p3 = [[Person alloc] initWithName:@"zhubada" age:@"1"];

Person *p4 = [[Person alloc] initWithName:@"zhubada" age:@"33"];

Person *p5 = [[Person alloc] initWithName:@"hehehe" age:@"38"];

NSArray *person = @[p1, p2, p3, p4, p5];

NSSortDescriptor *des1 = [[NSSortDescriptor alloc]initWithKey:@"name" ascending:YES];

NSSortDescriptor *des2 = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:NO];

NSArray *newArray1 = [person sortedArrayUsingDescriptors:@[des1,des2]];

NSLog(@"%@",newArray1);

3.使用sortedArrayUsingComparator进行数组排序

Comparator的返回结构枚举类型含义:

NSOrderedAscending//升序

The left operand is smaller than the right operand.

NSOrderedSame

The two operands are equal.

NSOrderedDescending//降序

The left operand is greater than the right operand.

直接使用代码块对字典里具体属性进行排序

NSString *arr = [arr sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {

NSString *age1 = [obj1 objectForKey:@"age"];

NSString *age2 = [obj2 objectForKey:@"age"];

//转换成NSNumber便于直接使用compare:方法直接排序

NSNumber *num1 = [NSNumber numberWithInteger:age1];

NSNumber *num2 = [NSNumber numberWithInteger:age2];

//升序

NSComparisonResult result = [num1 compare:num2];

return result;

}];

NSLog(@"%@",arr);

//其中compare:内部实现类似于下(也可自定义对象的比较方法)

NSComparator cmp = ^(id obj1, id obj2) {

if ([obj1 integerValue] < [obj2 integerValue]) {

      return (NSComparisonResult)NSOrderedAscending;        

}else if ([obj1 integerValue] > [obj2 integerValue]) {

      return (NSComparisonResult)NSOrderedDescending; 

}else {

      return (NSComparisonResult)NSOrderedSame;

};

相关文章

  • OC数组排序

    1.使用NSSortDescriptor对象进行数组排序 //创建一个数组NSArray *array = @[@...

  • OC数组排序

    oc中数组排序的方法很多,下面列举两种方法: 1.定义一组数字数组 2.排序 方法一: 方法二: 3.打印结果:

  • OC各种算法,排序,查找实现

    二维数组查找数字的OC实现 OC 二分查找的实现 快速排序

  • iOS请问对无序的Array排序,有什么好的方法,代码越少,AP

    常用 OC 排序方法: 1).不可变数组 - (NSArray*)sortedArrayUsingSelector...

  • oc_数组排序

    // 对dataSourceArray按timestamp的顺序进行降序排列 YES升序、NO降序 NSSortD...

  • 数组的排序

    系统提供的排序方法,我觉得应该是快速排序方法的封装 OC swift 还有其他排序的方法,可参考文章:iOS 数组...

  • OC中数组排序总结

    过完节回来,感觉很多东西都生疏了。总结一下数组的排序。应该不会太完美,后续添加补充。 OC中的数组排序方法其实不太...

  • iOS排序方法集合

    OC_选择排序 OC_冒泡排序 参考原文:排序算法

  • 数字数组排序

    八大排序算法排序是个老生常谈的问题。好奇OC下各种排序功能的优劣,于是自己写了代码测试了下。每次排序前生成新数组数...

  • NSSortDescriptor排序

    在OC中,使用NSSortDescriptor可以实现按对象的属性进行排序。例如,我们有个User对象数组,想根据...

网友评论

      本文标题:OC数组排序

      本文链接:https://www.haomeiwen.com/subject/whvxvxtx.html