对数组进行排序(不写compare:方法)
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调换.
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调换.