//创建一个数组

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. [转]Centos安装zeromq和jzmq

    Required packages: autoconf automake libtool gcc gcc-g++ make libuuid-dev git java-1.6.0-openjdk-dev ...

  2. winform中dataGridView单元格根据值设置新值,彻底解决绑定后数据类型转换的困难

    // winform中dataGridView单元格在数据绑定后,数据类型更改困难,只能迂回实现.有时候需要将数字变换为不同的文字描述,就会出现int32到string类型转换的异常,借助CellFo ...

  3. 如何区分Babel中的stage-0,stage-1,stage-2以及stage-3(二)

    上一篇文章我们介绍了法力无边的stage-0 和 包罗万象的stage-1, 现在我们来介绍下 stage-2 和 stage-3 深藏不露的stage-2 为什么说 stage-2深藏不露呢,因为它 ...

  4. 使用weave管理docker网络

    weave简介 Weave creates a virtual network that connects Docker containers deployed across multiple hos ...

  5. C#读取文件夹大小

    今天需要做一个读取文件夹大小的功能,为了避免遍历文件夹下所有文件并求出总大小,找到如下的好方法: 首先要在项目中引用一个COM组件:Microsoft Scripting Runtime,这个在Ref ...

  6. 代码安装apk文件

    Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri uri = Uri.fromFile(file); in ...

  7. 转 listener.log文件过大导致oracle数据库连接非常慢

    数据库(31)  最近发现oracle数据库连接非常慢,sqlplus很快,用客户端就很慢,甚至会无响应. 然后服务器内存一下就飙升到了90%,不是表空间占满了,也不是数据库连接数占满了.重启还是一样 ...

  8. sql server 去除(替换)空格,回车,换行 函数

    --create-- SQL去除回车符,换行符,空格和水平制表符create function RepSymbolChar(@str nvarchar(max))returns nvarchar(ma ...

  9. ajax批删

  10. C#实现Windows服务

    资源:Walkthrough: Creating a Windows Service Application in the Component Designer: https://msdn.micro ...