NSArray的排序问题

1.关于NSArray的排序问题,首先想到的是不是冒泡排序,插入排序.......

oc中的NSArray有一种更简单的方式:

例如:

NSArray *stringArray=[NSArray arrayWithObjects:@"abc1 ",@"abc21",@"abc12",@"abc03",@"abc04", nil];

NSComparator sotrBlock=^(id string1,id string2){

    return [string1 compare:string2];

};

NSArray *sortArray=[stringArray sortedArrayUsingComparator:sotrBlock];

得到的sortArray就是排序后的数组

2.那么问题来了,(高级排序)

如果有一个Person类里有另外一个类的变量,比如说Person类除了name,age变量,还有一辆车Car类型,Car类里有个name属性。对Person对象进行排序,有这样的要求:按照Car的name排序,如果是同一辆车,也就是Car的name相同,那么再按照年龄进行排序,如果年龄也相同,最后按照Person的name进行排序。

//第一步把person加入数组

 NSArray *array = [NSArray arrayWithObjects:p1,p2,p3,p4,p5, nil];//p1....p5为创建的person对象

//第二部//我这里是:首先按照年龄排序,然后是车的名字,最后是按照人的名字

 

NSSortDescriptor *carNameDesc = [NSSortDescriptor sortDescriptorWithKey:@"car.name" ascending:YES];//构建排序描述器

NSSortDescriptor *personNameDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];

NSSortDescriptor *personAgeDesc = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];

NSArray *descriptorArray = [NSArray arrayWithObjects:personAgeDesc,carNameDesc,personNameDesc, nil];

//把排序描述器放进数组里,放入的顺序就是你想要排序的顺序

 NSArray *descriptorArray = [NSArray arrayWithObjects:personAgeDesc,carNameDesc,personNameDesc, nil];

 NSArray *sortedArray = [array sortedArrayUsingDescriptors: descriptorArray];

sortedArray就是排序后的数组

是不是感觉挺简单的................ 

转载于:https://www.cnblogs.com/hualuoshuijia/p/4972602.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值