前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Objective-C 数组对象排序

Objective-C 数组对象排序

作者头像
赵哥窟
发布2018-09-13 11:51:06
8600
发布2018-09-13 11:51:06
举报
文章被收录于专栏:日常技术分享

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

新建一个Peron类

代码语言:javascript
复制
#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;
代码语言:javascript
复制
#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);
}
代码语言:javascript
复制
        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)];

输出结果

代码语言:javascript
复制
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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.05.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档