黑马程序员技术交流社区

标题: 论oc的魅力 [打印本页]

作者: AngleMGG    时间: 2014-9-27 14:05
标题: 论oc的魅力
到今天才发现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);
复制代码
瞬间觉得高大上啊,有木有



作者: longshaocn    时间: 2014-9-27 14:53
我也是从这道题感受到的,其实应该说是面向对象的强大!
作者: 小叶子    时间: 2014-9-27 15:03
不错,求QQ,相互学习,交流~~~~
作者: 超越自己    时间: 2014-9-27 15:18
学习了。。
作者: AngleMGG    时间: 2014-9-27 15:20
longshaocn 发表于 2014-9-27 14:53
我也是从这道题感受到的,其实应该说是面向对象的强大!

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

这里貌似不能,私发qq、联系方式什么的,会被禁言
作者: flypig    时间: 2014-9-27 15:44
面向对象的强大
作者: 小叶子    时间: 2014-9-27 15:47
AngleMGG 发表于 2014-9-27 15:37
这里貌似不能,私发qq、联系方式什么的,会被禁言

额...不知道

发都发了,你加我吧~~我今天加了好几个一起学习的同学了...可以互相交流下




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