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操作系统的编程语言. ①具备完善的面向对象特性: 封装:将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内 继 ...
随机推荐
- TLB初始化 Missing Handler,MIPS R3K mips_init_tlb
#include <mips/r3kc0.h> LEAF(mips_init_tlb) mfc0 t0, C0_ENTRYHI # 保存ASID mtc0 zero, C0_ENTRYLO ...
- linux 安装 python2.7
若新安装虚拟机,或者新装linux系统.需安装gcc等yum -y install gcc gcc-c++ autoconf automake cmake ntp rsync ssh vim yum ...
- Go语言学习笔记1 变量,类型以及赋值
1.变量 1.1 声明变量 使用var关键字可以创建一个指定类型的变量: var i int = 0 var i = 0 var i int 以上三个表达式均是合法的,第三个表达式会将i初始化为int ...
- 解决VS下“LC.exe已退出,代码为-1”问题
今天使用VS2015开发一个Winform程序,手一抖拖错了一个第三方控件,然后将其去掉并删除相关的引用,结果导致了LC.exe错误:"Lc.exe已退出,代码为-1 ". 经过上 ...
- 【学】jQuery的源码思路2——$符号是如何封装的
jQuery中的$符号功能很强大,原因在于对函数参数的个数以及种类的控制,还有对于面向对象思想的运用 function jQuery(args){ //接受参数,并对其判断 this.elements ...
- animated js动画示例
function fabtn(a){ $(a).find('i').addClass('animated wobble'); setTimeout(function(){ $(a).find('i') ...
- Linux文件权限概念
一.Linux文件属性 1.第一列代表这个文件的类型与权限(permission): 共有10个字符 第一个字符代表这个文件的类型,是"目录,文件或链接文件等": [d]----& ...
- metasploit渗透初探MR.robot(一)
看了MR.robot,有一种研究渗透技术的冲动, 网上也看了些教程,要从kali linux说起, 下载vmware 12,http://www.vmware.com/go/tryworkstatio ...
- 前端网站helper
聚合api 一.颜色类网站http://colorhunt.co 这个网站给我们提供了很多的配色方案,我们直接使用就OK了.使用方法也很简单,鼠标移动到对应的颜色上,我们就可以看到颜色的十六进制码,复 ...
- MVC表单
.cs namespace SendToMvcHello.Controllers { public class HomeController : Controller { // GET: Home p ...