• OC NSArray数组排序


    一、一般排序

    1         // 排序
    2         NSArray *arr = @[@"1",@"3",@"2",@"5"];
    3         NSArray *newarr = [arr sortedArrayUsingSelector:@selector(compare:)];
    4         NSLog(@"%@",newarr);

    二、高级排序(数组中存的是对象,按对象的属性进行排序)

     1 #import <Foundation/Foundation.h>
     2 
     3 @interface Student : NSObject
     4 
     5 @property (assign ,nonatomic) int age;
     6 
     7 //提供一种比较方式
     8 - (NSComparisonResult)compareStudentWithAge:(Student *)tempStudent;
     9 
    10 
    11 @end
    12 
    13 
    14 
    15 
    16 #import "Student.h"
    17 
    18 @implementation Student
    19 
    20 - (NSComparisonResult)compareStudentWithAge:(Student *)tempStudent
    21 {
       //方法1:

    //      NSNumber *num1 = [[NSNumber alloc] initWithInteger:self.age];

    //      NSNumber *num2 = [[NSNumber alloc] initWithInteger:tempStudent.age];

    //      return [num1 compare:num2];

        //方法2:
    22     if (self.age>tempStudent.age) {
    23         return NSOrderedDescending;
    24     }
    25     else if (self.age<tempStudent.age)
    26         return NSOrderedAscending;
    27     else
    28         return NSOrderedSame;
    29 }
    30 
    31 -(NSString *)description
    32 {
    33     return [NSString stringWithFormat:@"age:%d",self.age];
    34 }
    35 
    36 @end
    37 
    38 #import <Foundation/Foundation.h>
    39 
    40 #import "Student.h"
    41 int main(int argc, const char * argv[]) {
    42     @autoreleasepool {
    43 
    44         Student *stu1 = [[Student alloc] init];
    45         stu1.age= 18;
    46         Student *stu2 = [[Student alloc] init];
    47         stu2.age= 15;
    48         Student *stu3 = [[Student alloc] init];
    49         stu3.age= 19;
    50         
    51         NSArray *stuArr = @[stu1,stu2,stu3];
    52         NSArray *newStuArr = [stuArr sortedArrayUsingSelector:@selector(compareStudentWithAge:)];
    53         NSLog(@"%@",newStuArr);
    54 }
    55 return 0;
    56 }

    三、超级排序(数组中对象多属性)

     1 #import <Foundation/Foundation.h>
     2 
     3 @interface People : NSObject
     4 
     5 @property (assign,nonatomic) NSInteger age;
     6 @property (assign, nonatomic) NSInteger score;
     7 @property (copy,nonatomic) NSString *name;
     8 
     9 @end
    10 
    11 
    12 
    13 
    14 
    15 #import "People.h"
    16 
    17 @implementation People
    18 
    19 
    20 - (NSString *)description
    21 {
    22     return [NSString stringWithFormat:@"age:%ld score:%ld name:%@", self.age,self.score,self.name];
    23 }
    24 
    25 
    26 #import <Foundation/Foundation.h>
    27 #import "People.h"
    28 
    29 int main(int argc, const char * argv[]) {
    30     @autoreleasepool {
    31         
    32         People *stu1 = [[People alloc] init];
    33         stu1.age = 18;
    34         stu1.score = 59;
    35         stu1.name = @"bowen1";
    36         
    37         People *stu2 = [[People alloc] init];
    38         stu2.age = 18;
    39         stu2.score = 59;
    40         stu2.name = @"bowen2";
    41         
    42         People *stu3 = [[People alloc] init];
    43         stu3.age = 20;
    44         stu3.score = 70;
    45         stu3.name = @"bowen3";
    46         
    47         People *stu4 = [[People alloc] init];
    48         stu4.age = 16;
    49         stu4.score = 62;
    50         stu4.name = @"bowen4";
    51         
    52         People *stu5 = [[People alloc] init];
    53         stu5.age = 15;
    54         stu5.score = 80;
    55         stu5.name = @"bowen5";
    56         
    57         NSArray *arr = @[stu1,stu2,stu3,stu4,stu5];
    58         
    59         // 排序描述,数组按属性排序 NSSortDescriptor
    60         NSSortDescriptor *ageSort = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:YES];
    61         NSSortDescriptor *scoreSort = [[NSSortDescriptor alloc] initWithKey:@"score" ascending:YES];
    62         NSSortDescriptor *nameScort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
    63         
    64         //使用[排序描述]对数组进行排序
    65         NSArray *newArr = [arr sortedArrayUsingDescriptors:@[ageSort,scoreSort,nameScort]];
    66         
    67         NSLog(@"%@",newArr);
    68         
    69     }
    70     return 0;
    71 }
    72 
    73 @end
  • 相关阅读:
    JDBC JAVA数据库插入语句
    uri与url
    struts标签库
    jdbc使用
    mysql安装配置
    Json Web Token
    实现一个简单vue
    vue v2.5.0源码-双向数据绑定
    vue v2.5.0源码-初始化流程
    webpack
  • 原文地址:https://www.cnblogs.com/oc-bowen/p/5047806.html
Copyright © 2020-2023  润新知