黑马程序员技术交流社区

标题: OC学习笔记:NSArray数组简单排序 [打印本页]

作者: 弥修斯    时间: 2015-8-20 18:12
标题: OC学习笔记:NSArray数组简单排序
本帖最后由 弥修斯 于 2015-8-20 18:41 编辑

简单排序(sortedArrayUsingSelector:)
代码如下:
  1. //简单排序
  2. void sortArray1(){
  3.     NSArray *array = [NSArray arrayWithObjects:@"abc",@"456",@"123",@"789",@"ef", nil];
  4.     NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(compare:)];
  5.     NSLog(@"排序后:%@",sortedArray);
  6. }
复制代码

这是字符串自带的compare:方法;
可以自己写compare:方法,进行对象的比较;如下:
  1. #import "Person.h"
  2. @implementation Person
  3. //直接实现静态方法,获取带有name和age的Person对象
  4. +(Person *)personWithAge:(int) age withName:(NSString *)name{
  5.     Person *person = [[Person alloc] init];
  6.     person.age = age;
  7.     person.name = name;
  8.     return person;
  9. }

  10. //自定义排序方法
  11. -(NSComparisonResult)comparePerson:(Person *)person{
  12.   //默认按年龄排序
  13.     NSComparisonResult result = [[NSNumber numberWithInt:person.age] compare:[NSNumber numberWithInt:self.age]];//注意:基本数据类型要进行数据转换
  14.   //如果年龄一样,就按照名字排序
  15.     if (result == NSOrderedSame) {
  16.         result = [self.name compare:person.name];
  17.     }
  18.     return result;
  19. }
  20. @end
复制代码


主函数代码:
  1. void sortArray2(){
  2.     Person *p1 = [Person personWithAge:23 withName:@"zhangsan"];
  3.     Person *p2 = [Person personWithAge:21 withName:@"lisi"];
  4.     Person *p3 = [Person personWithAge:24 withName:@"wangwu"];
  5.     Person *p4 = [Person personWithAge:24 withName:@"liwu"];
  6.     Person *p5 = [Person personWithAge:20 withName:@"liwu"];
  7.     NSArray *array = [NSArray arrayWithObjects:p1,p2,p3,p4,p5, nil];
  8.     NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(comparePerson:)];
  9.     NSLog(@"排序后:%@",sortedArray);
  10. }
复制代码





作者: norwood    时间: 2015-8-20 18:16
记得还有一种方法,记不起了,回去翻一翻笔记
作者: yushimin763    时间: 2015-8-20 18:28
学习了,谢谢分享

作者: fangbuqianxing    时间: 2016-5-7 11:17
为什么自学视频就没关于数组排序的方法,却总是考试排序,还多个条件,这个方法默认是升序,那降序怎么弄
作者: stud    时间: 2016-5-7 12:37
谢谢分享!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2