NSSortDescriptor对象进行数组排序
//创建一个数组
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对象进行数组排序的更多相关文章
- OC中用NSSortDescriptor对象进行数组排序
//创建一个数组 NSArray *array = @[@"one", @"two", @"three", @"four" ...
- IOS对存放对象的数组排序
我们开发的每个程序都会使用到一些数据,而这些数据一般被封装在一个自定义的类中.例如一个音乐程序可能会有一个Song类,聊天程序则又一个 Friend类,点菜程序会有一个Recipe类等.有时候我们希望 ...
- Objective-C的基础语法总结
1.NSLog(@“hello world!”);//打印语句的函数,需要打印的字符串放在@之后. NSLog(@“are %d and %d different?%@”,4,4,@”YES”); 2 ...
- iOS学习16之OC集合遍历和数组排序
1.集合遍历 1> 遍历 集合(Collection):OC中提供的容器类:数组,字典,集合. 遍历:对集合中元素依次取出的过称叫做遍历. 三种方式:① for循环遍历: ② NSEnumera ...
- iOS开发之谓词Predicate和对象数组的排序
我们在开发中经常使用的Predicate谓词,主要是正则表达式的使用,今天给大家简单的讲讲怎样去使用谓词. 因为内容比较简单,所以直接上代码展示: NSMutableArray *people_arr ...
- OC-数组排序-NSSortDescriptor使用
OC-数组排序-NSSortDescriptor使用 在Object-c中,当有一个班级类MyClass,还有一个学生类Student.在班级类MyClass中通过一个可变数组NSMutableArr ...
- javascript 构造函数方式定义对象
javascript是动态语言,可以在运行时给对象添加属性,也可以给对象删除(delete)属性 <html> <head> <script type="tex ...
- javascript 构造函数方式定义对象 (转载)
javascript 构造函数方式定义对象 javascript是动态语言,可以在运行时给对象添加属性,也可以给对象删除(delete)属性 <html> <head> & ...
- OC学习心得【适合初学者】
一.类和对象 1.OC语言是C语言的扩充,并且OC是iOS和OS X操作系统的编程语言. ①具备完善的面向对象特性: 封装:将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内 继 ...
随机推荐
- 浅入浅出EmguCv(三)EmguCv打开指定视频
打开视频的思路跟打开图片的思路是一样的,只不过视频是由一帧帧图片组成,因此,打开视频的处理程序有一个连续的获取图片并逐帧显示的处理过程.GUI同<浅入浅出EmguCv(二)EmguCv打开指定图 ...
- nginx(tengine)的一些小优化(持续更新)
1.nginx日志切割脚本 需求来源:nginx本身并没有日志切割的功能,由访问产生的大日志很难进行分析. 实现目的:每天对nginx日志进行切割,并备份至指定文件夹. 简要指令: mv /usr/l ...
- http请求相关
1.POST方式向服务器发送AJAX请求时 设置请求头 application/x-www-form-urlencoded 2.表单上传文件时 设置请求头 multipart/form-d ...
- <<测试驱动开发的艺术>>读书笔记
TDD通过边测试边编写代码,然后重构来防止重构所引起的错误 通过自动化测试和持续集成工具,随时保持可以发布 TDD第一步: 1. 需求分解 2. 将需求转化成测试 3. 写一个失败的测试 4. 逐步通 ...
- HTML input-file 上传类型控制
HTML input-file 上传类型控制 input file 属性 accept 表示可以选择的文件MIME类型,多个MIME类型用英文逗号分开,常用的MIME类型见下表. 只能选择png和gi ...
- HTML5 History API实现无刷新跳转
在HTML5中, 新增了通过JS在浏览器历史记录中添加项目的功能. 在不刷新页面的前提下显示改变浏览器地址栏中的URL. 添加了当用户单击浏览器的后退按钮时触发的事件. 通过以上三点,可以实现在不刷新 ...
- [转]uboot中SPL作用
转:http://blog.csdn.net/voice_shen/article/details/17373671 这篇文章写的非常详细 [u-boot: 2014.01-rc1] 本文将使用sam ...
- Python基础(二)之字符串
字符串在python语言中极为常用,下面就带大家来一起回顾一下字符串常用的方法: 1.count 作用:统计字符串中字符的个数 例: str_yu = 'xiAoyuhaha' print(str_y ...
- windows WSABUF 结构在IOCP 中应用时两个成员变量的意义
WSABUF 结构的原型如下: typedef struct __WSABUF { u_long len; char FAR *buf; } WSABUF, *LPWSABUF; 该结构在IOCP 中 ...
- SQL Server 树形表非循环递归查询
很多人可能想要查询整个树形表关联的内容都会通过循环递归来查...事实上在微软在SQL2005或以上版本就能用别的语法进行查询,下面是示例. --通过子节点查询父节点WITH TREE AS( ...