zoukankan      html  css  js  c++  java
  • OC中用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);

    可以用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);

    使用NSSortDesriptor进行数组排序有三步

         1.创建一个用来排序的数组

         2.创建一个排序条件,初始化中需要指定按照数组中对象的什么属性进行排序,升序或者降序

         3.数组根据排序条件进行排序,得到一个排序之后的数组(如果是可变数组,不会生成新数组,还是本身)

    使用的sortedArrayUsingSelecor:的方法,就不需要创建NSSortDescriptor

    NSArray *strArray = @[@"zhonger", @"zhubada", @"qiuxiang", @"tangbohu", @"honghuang"];
    
        NSArray *nesStr = [strArray sortedArrayUsingSelector:@selector(compare:)]; //SEL  只能用@selector(方法名)给定,并且,如果数组使用这个数组进行排序,此方法必须是返回值为NSComparisionResult
    
        NSLog(@"newStr is %@",nesStr);
    
     
    
        NSArray *personNewArray = [person sortedArrayUsingSelector:@selector(compareByName:)];
    
        NSLog(@"--%@",personNewArray);

     

  • 相关阅读:
    【纯水题】POJ 1852 Ants
    【树形DP】BZOJ 1131 Sta
    【不知道怎么分类】HDU
    【树形DP】CF 1293E Xenon's Attack on the Gangs
    【贪心算法】CF Emergency Evacuation
    【思维】UVA 11300 Spreading the Wealth
    【树形DP】NOI2003 逃学的小孩
    【树形DP】BZOJ 3829 Farmcraft
    【树形DP】JSOI BZOJ4472 salesman
    【迷宫问题】CodeForces 1292A A NEKO's Maze Game
  • 原文地址:https://www.cnblogs.com/Walking-Jin/p/5468371.html
Copyright © 2011-2022 走看看