NSArray *sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) {

if ([obj1 integerValue] > [obj2 integerValue]) {

 return (NSComparisonResult)NSOrderedDescending;

}

if ([obj1 integerValue] < [obj2 integerValue]) {

 return (NSComparisonResult)NSOrderedAscending;

}

return (NSComparisonResult)NSOrderedSame;

}];

 

以前只用过[array sortedArrayUsingSelector:@selector(compare:)];方法,若没有现成的compare:方法还要自己写一个新的比较方法,比较麻烦.

在研究对数组逆向排序时看到了这个方法,貌似是4.0新出的blocks.(Block, 简单的说,就是一个函数对象,和其它类型的对象一样,你可以创建它,可以赋给一个变量,也可以作为函数的参数来传递)

blocks传送门:http://www.cocoachina.com/macdev/objc/2010/0601/1591.html

用法:若sortedArray存的数据是Person类的对象,(name,age,address...),要以age排序,即将上面方法中的[obj1 intergerValue] 改为[obj1/2 age]即可;或 要倒序排列,则将NSOrderedDescending和NSOrderedAscending调换.

 posted on 2010-11-16 15:42  Sure-G  阅读(2601)  评论(0)    收藏  举报