黑马程序员技术交流社区
标题:
OC学习笔记:NSArray数组简单排序
[打印本页]
作者:
弥修斯
时间:
2015-8-20 18:12
标题:
OC学习笔记:NSArray数组简单排序
本帖最后由 弥修斯 于 2015-8-20 18:41 编辑
简单排序(sortedArrayUsingSelector:)
代码如下:
//简单排序
void sortArray1(){
NSArray *array = [NSArray arrayWithObjects:@"abc",@"456",@"123",@"789",@"ef", nil];
NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"排序后:%@",sortedArray);
}
复制代码
这是字符串自带的compare:方法;
可以自己写compare:方法,进行对象的比较;如下:
#import "Person.h"
@implementation Person
//直接实现静态方法,获取带有name和age的Person对象
+(Person *)personWithAge:(int) age withName:(NSString *)name{
Person *person = [[Person alloc] init];
person.age = age;
person.name = name;
return person;
}
//自定义排序方法
-(NSComparisonResult)comparePerson:(Person *)person{
//默认按年龄排序
NSComparisonResult result = [[NSNumber numberWithInt:person.age] compare:[NSNumber numberWithInt:self.age]];//注意:基本数据类型要进行数据转换
//如果年龄一样,就按照名字排序
if (result == NSOrderedSame) {
result = [self.name compare:person.name];
}
return result;
}
@end
复制代码
主函数代码:
void sortArray2(){
Person *p1 = [Person personWithAge:23 withName:@"zhangsan"];
Person *p2 = [Person personWithAge:21 withName:@"lisi"];
Person *p3 = [Person personWithAge:24 withName:@"wangwu"];
Person *p4 = [Person personWithAge:24 withName:@"liwu"];
Person *p5 = [Person personWithAge:20 withName:@"liwu"];
NSArray *array = [NSArray arrayWithObjects:p1,p2,p3,p4,p5, nil];
NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(comparePerson:)];
NSLog(@"排序后:%@",sortedArray);
}
复制代码
作者:
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