专栏首页ios 技术积累Objective-C 数组对象排序

Objective-C 数组对象排序

NSSortDescriptor可以根据数组中对象的属性来排序 为排序数组的每个属性创建NSSortDescriptor对象,将所有这些对象放入一个数组中,该数组将会在后面用作参数。使用NSArray类的sortedArrayUsingDescripors:方法并将NSSortDescriptor对象数组作为参数传递过去,会返回一个排好序的数组

新建一个Peron类

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property (copy, nonatomic) NSString *name;
@property (assign, nonatomic) NSInteger age;

-(instancetype)initWithName:(NSString *)name age:(NSInteger)age;

-(void)printPerson;
#import "Person.h"

@implementation Person

-(instancetype)initWithName:(NSString *)name age:(NSInteger)age {
    self = [super init];
    if (self) {
        self.name = name;
        self.age = age;
    }
    return self;
}

-(void)printPerson {
    NSLog(@"Name is %@ ageis %ld ",_name, _age);
}
        Person *p1 = [[Person alloc] initWithName:@"aa" age:26];
        Person *p2 = [[Person alloc] initWithName:@"bb" age:15];
        Person *p3 = [[Person alloc] initWithName:@"cc" age:6];
        Person *p4 = [[Person alloc] initWithName:@"dd" age:30];
        Person *p5 = [[Person alloc] initWithName:@"ee" age:5];
        
        NSArray *personArr = @[p1,p2,p3,p4,p5];
        
        // 为每个属性创建NSSortDescriptor对象
        NSSortDescriptor *sdAge = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
        NSSortDescriptor *sdName = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
        
        NSArray * sortedArray = [personArr sortedArrayUsingDescriptors:@[sdAge,sdName]];
        // 为数组中每个元素执行方法,输出状态
        [sortedArray makeObjectsPerformSelector:@selector(printPerson)];

输出结果

018-05-23 11:09:49.648013+0800 ArrayObjectSort[40836:2856845] Name is ee ageis 5
2018-05-23 11:09:49.648045+0800 ArrayObjectSort[40836:2856845] Name is cc ageis 6
2018-05-23 11:09:49.648061+0800 ArrayObjectSort[40836:2856845] Name is bb ageis 15
2018-05-23 11:09:49.648074+0800 ArrayObjectSort[40836:2856845] Name is aa ageis 26
2018-05-23 11:09:49.648087+0800 ArrayObjectSort[40836:2856845] Name is dd ageis 30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Objective-C 静态方法可以重写吗

    赵哥窟
  • Axure RP9 登录面板切换

    赵哥窟
  • Objective-C 数组筛选

    想项目有可能会遇到按照一定条件对某一个数组进行筛选。 直接遍历数组,取符合条件的对象放到一个新数组效率可能不高。

    赵哥窟
  • 63-函数调用:参数使用注意事项

    凯茜的老爸
  • Python的代码风格

    随着你编写的程序越来越长,有必要了解一些代码格式设置约定。请花时间让你的代码尽可能易于阅读;让代码易于阅读有助于你掌握程序是做什么的,也可以帮助他人理解你编写的...

    于小勇
  • 线性代数--MIT18.06(二十)

    行列式用一个数值就包含了所有信息,从行列式的值出发我们又可以发现一些新的公式,用于计算我们之前讲解过得一些可以求解但是没有公式用于求解的东西

    fireWang
  • MIT无人车新突破:不需要地图也能在“乡野小道”上自动行驶

    对于无人车来说,想要挑战那些偏僻的道路是极其困难的一件事。目前的自动驾驶汽车需要依靠高清的车道标记以及详细的 3D 地图,以保证驾驶的安全性。这也是为什么这个领...

    AI科技大本营
  • 20140921遇到的问题-----JAVA----JS------jquery-1.11.1.min.js导入MyEcilpse报错的解决办法

    最近把别人帮我写的一个JS文件一起导入到项目中,由于他的方法中用到了jquery-1.11.1.min.js,

    wust小吴
  • dedecms首页去掉index.html怎么设置

      很多网友用IIS服务器建站,反映说dedecms首页默认多了一个/index.html,一般是没有这个后缀的,直接就**.com,那么如何将dedecms首...

    ytkah
  • Form表单 问题多多(中)

    HTML5学堂 - 刘国利:在上一篇的博文当中,主要讲解了表单的嵌套规则与书写习惯。在本篇博文当中,我主要就具体的样式实现进行一下讲解,并提一下表单相关的浏览器...

    HTML5学堂

扫码关注云+社区

领取腾讯云代金券