A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 弥修斯 于 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. }
复制代码




4 个回复

倒序浏览
记得还有一种方法,记不起了,回去翻一翻笔记
回复 使用道具 举报
学习了,谢谢分享
回复 使用道具 举报
为什么自学视频就没关于数组排序的方法,却总是考试排序,还多个条件,这个方法默认是升序,那降序怎么弄
回复 使用道具 举报
stud 来自手机 中级黑马 2016-5-7 12:37:55
报纸
谢谢分享!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马