//创建一个数组

NSArray *array = @[@"zhangsan", @"lisi", @"zhonger", @"zhubada", @"honghunag"];

//创建一个排序条件,也就是一个NSSortDescriptor对象

//其中第一个参数为数组中对象要按照什么属性来排序(比如自身、姓名,年龄等)

//第二个参数为指定排序方式是升序还是降序

//ascending  排序的意思,默认为YES 升序

NSSortDescriptor *des = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES];

NSArray *newArray = [array sortedArrayUsingDescriptors:@[des]];

NSLog(@"%@",newArray);

可以实现第一排序条件和第二排序条件

创建一个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);

NSSortDescriptor对象进行数组排序的更多相关文章

  1. OC中用NSSortDescriptor对象进行数组排序

    //创建一个数组 NSArray *array = @[@"one", @"two", @"three", @"four" ...

  2. IOS对存放对象的数组排序

    我们开发的每个程序都会使用到一些数据,而这些数据一般被封装在一个自定义的类中.例如一个音乐程序可能会有一个Song类,聊天程序则又一个 Friend类,点菜程序会有一个Recipe类等.有时候我们希望 ...

  3. Objective-C的基础语法总结

    1.NSLog(@“hello world!”);//打印语句的函数,需要打印的字符串放在@之后. NSLog(@“are %d and %d different?%@”,4,4,@”YES”); 2 ...

  4. iOS学习16之OC集合遍历和数组排序

    1.集合遍历 1> 遍历 集合(Collection):OC中提供的容器类:数组,字典,集合. 遍历:对集合中元素依次取出的过称叫做遍历. 三种方式:① for循环遍历: ② NSEnumera ...

  5. iOS开发之谓词Predicate和对象数组的排序

    我们在开发中经常使用的Predicate谓词,主要是正则表达式的使用,今天给大家简单的讲讲怎样去使用谓词. 因为内容比较简单,所以直接上代码展示: NSMutableArray *people_arr ...

  6. OC-数组排序-NSSortDescriptor使用

    OC-数组排序-NSSortDescriptor使用 在Object-c中,当有一个班级类MyClass,还有一个学生类Student.在班级类MyClass中通过一个可变数组NSMutableArr ...

  7. javascript 构造函数方式定义对象

    javascript是动态语言,可以在运行时给对象添加属性,也可以给对象删除(delete)属性 <html> <head> <script type="tex ...

  8. javascript 构造函数方式定义对象 (转载)

    javascript 构造函数方式定义对象   javascript是动态语言,可以在运行时给对象添加属性,也可以给对象删除(delete)属性 <html> <head> & ...

  9. OC学习心得【适合初学者】

    一.类和对象 1.OC语言是C语言的扩充,并且OC是iOS和OS X操作系统的编程语言. ①具备完善的面向对象特性: 封装:将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内 继 ...

随机推荐

  1. Eclipse中web项目部署至Tomcat步骤

    Eclipse的web工程至Tomcat默认的部署目录是在工程空间下,本文旨在将部署目录改为Tomcat安装目录,并解决依赖包输出问题. 1.在Eclipse中添加Tomcat服务器. 2.将web工 ...

  2. powerdesinger

    www.sap.com solutions>data management>powerdesinger http://www.sap.com/product/data-mgmt/power ...

  3. iso 培训笔记

    protocol协议 + 类方法- 实例方法:继承()方法 <> [] 方法调用 .属性:参数mvc storyboard 资源文件info.plist 权限viewcontroller ...

  4. MYSQL 判断一个时间段是否在另一个时间段内。

    [1 CREATE TABLE #B 2 ( 3 MeetingRoom int, 4 BeginTime datetime, 5 EndTime datetime6 ) 7 insert into ...

  5. java web的开发 知识要点

    近期闲下来时写的一个有关 java web的开发 的 常用架构 的总结,用于初 学 者或团队新人培训. Java开发初步.ppt SSH  为 struts+spring+hibernate 的一个集 ...

  6. Changing SID Server 2012

    Changing SID Server 2012  Windows Server > Windows Server 2012 General Question 0 Sign in to vote ...

  7. [转载]再谈百度:KPI、无人机,以及一个必须给父母看的案例

    [转载]再谈百度:KPI.无人机,以及一个必须给父母看的案例 发表于 2016-03-15   |   0 Comments   |   阅读次数 33 原文: 再谈百度:KPI.无人机,以及一个必须 ...

  8. Java在Web项目中读取properties文件

    import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import ...

  9. 用两个Stack来实现一个Queue

    import java.util.Stack; /** * 问题:用两个Stack来实现一个Queue; * 方法:栈的特点是先进后出:而队列的特点是先进先出: * 用两个栈正好能把顺序调过来: * ...

  10. 3.2 一般的哈尔空间Vj

    例3.2给予我们继续往下面做的动力.很明显的我们对于g(t)的逼近还是太粗糙了.很自然的,我们会想到,如果继续细分我们的短点,比如每1/2取一个值,甚至每1/4取一个值,那么就会有更好的逼近效果. 不 ...