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 条评论
登录 后参与评论

相关文章

来自专栏desperate633

LintCode 插入区间题目分析代码

给出一个无重叠的按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠 (如果有必要的话,可以合并区间)。

9340
来自专栏互联网杂技

今天由我亲自给大家总结

javascript内置对象有哪些? reg正则,booer,math,string,arr,obj,number,date,function,window全...

34180
来自专栏赵俊的Java专栏

合并区间

21430
来自专栏数据结构与算法

4927 线段树练习5

时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果 题目描述 Description 有n个数和5种操作...

371140
来自专栏青玉伏案

Objective-C精选字符串处理方法

        无论是什么编程语言对字符串的操作是少不了的,对复杂的字符串的分析和操作我们可以用正则表达式来达到我们的目的。简单的字符串处理我们可以借助OC中N...

22450
来自专栏iOS技术杂谈

iOS block探究(一): 基础详解你要知道的block都在这里

你要知道的block都在这里 转载请注明出处 https://cloud.tencent.com/developer/user/1605429 本文大纲 blo...

34080
来自专栏青玉伏案

Objective-C中的集合类

       下面详细的介绍Objective-C中的集合类以及每个集合类的用法,学过其他面向对象编程语言的小伙伴们看到OC的集合类会有种莫名的亲切感,理解起来...

19370
来自专栏DannyHoo的专栏

NSCharacterSet类在分割字符串中的应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

10720
来自专栏猿人谷

Objective-C: 字符串NSString与NSMutableString

      字符串算是OC中非常重要和常用的一部分内容,OC中的字符串与我之前在学习C,C++,Java中的字符串有一定的不同,它非常类似于C++中容器的概念,...

19860
来自专栏猿人谷

OC字符串常用函数

创建一个字符串对象: NSstring * str1 = @"hello"; NSString * str = [[NSString alloc]initWit...

197100

扫码关注云+社区

领取腾讯云代金券