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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© AngleMGG 中级黑马   /  2014-9-27 14:05  /  1272 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

到今天才发现oc的强大,今天做了一个要求进行Array数组排序的题,数组中存放若干个person对象,person对象有年龄、姓名、成绩成员变量,要求对数组按照成绩—年龄—姓名的大小顺序排序输出,第一感觉我会想到c语言的数组排序,创建一个二维数组,存放若干个person对象,而不同的数据类型明显没办法放到c数组中,这就不得不用Array了,然后对array数组遍历,然后比较各个对象中的元素,然后排序。这……我就没辙了,oc的强大就显现出来了,oc中有一个NSSortDescription类,这个是创建排序扫描器用的,其实就是创建一个排序规则,通过一些对象方法就能简单实现排序。比如
  1. Person *s1 = [[Student alloc] initWithName:@"jack" andAge:22 andScore:87];
  2.    
  3.     Person *s2 = [[Student alloc] initWithName:@"tom" andAge:20 andScore:87];

  4.     Person*s3 = [[Student alloc] initWithName:@"sosan" andAge:22 andScore:79];

  5.     Person *s4 = [[Student alloc] initWithName:@"jake" andAge:22 andScore:91];

  6.     //放入数值
  7.     NSArray *array = [NSArray arrayWithObjects:s1,s2,s3,s4, nil];
  8.    
  9.     //构建排序描述器
  10.     NSSortDescriptor *scoreDesc = [NSSortDescriptor sortDescriptorWithKey:@"score" ascending:YES];
  11.     NSSortDescriptor *ageDesc = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
  12.     NSSortDescriptor *nameDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
  13.    
  14.     //把排序描述器放进数组里,放入的顺序就是你想要排序的顺序
  15.     //按成绩——年龄——姓名排序
  16.     NSArray *descriptorArray = [NSArray arrayWithObjects:scoreDesc,ageDesc,nameDesc, nil];
  17.    
  18.     NSArray *sortedArray = [array sortedArrayUsingDescriptors: descriptorArray];

  19.     NSLog(@"%@",sortedArray);
复制代码
瞬间觉得高大上啊,有木有


7 个回复

倒序浏览
longshaocn 来自手机 中级黑马 2014-9-27 14:53:15
沙发
我也是从这道题感受到的,其实应该说是面向对象的强大!
回复 使用道具 举报
不错,求QQ,相互学习,交流~~~~
回复 使用道具 举报
学习了。。
回复 使用道具 举报
longshaocn 发表于 2014-9-27 14:53
我也是从这道题感受到的,其实应该说是面向对象的强大!

你流程走完了嘛,入学考试早上提交,今天明天周末,不知道有没有老师批呢,偏偏卡这个时间,悲剧啊
回复 使用道具 举报
小叶子 发表于 2014-9-27 15:03
不错,求QQ,相互学习,交流~~~~

这里貌似不能,私发qq、联系方式什么的,会被禁言
回复 使用道具 举报
flypig 中级黑马 2014-9-27 15:44:11
7#
面向对象的强大
回复 使用道具 举报
AngleMGG 发表于 2014-9-27 15:37
这里貌似不能,私发qq、联系方式什么的,会被禁言

额...不知道

发都发了,你加我吧~~我今天加了好几个一起学习的同学了...可以互相交流下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马