在iOS的Cocoa框架上,给NSMutableArray内容排序。
Comparator是一个block,需要返回NSComparisonResult类型的值,NSComparisonResult也是一个枚举值,用来比较大小时用到。这个block里需要做的事就是你按照你的标准比较你的NSArray里的对象,根据你的标准返回一个NSComparisonResult的值,下面是示例:
NSMutableArray* arr = [NSMutableArrayarrayWithObjects:
[NSNumber numberWithInt:0],
[NSNumber numberWithInt:3],
[NSNumber numberWithInt:2],
[NSNumber numberWithInt:1],
[NSNumber numberWithInt:7],
[NSNumber numberWithInt:8],
[NSNumber numberWithInt:9],
[NSNumber numberWithInt:10],
[NSNumber numberWithInt:6],
[NSNumber numberWithInt:5],
[NSNumber numberWithInt:4],
nil];
// 升序
// 0 --> 10
[arr sortUsingComparator:^NSComparisonResult(__strong id obj1,__strong id obj2){
return [obj1 intValue] > [obj2intValue];
}];
NSLog(@"%@", [arrdebugDescription]);
// 降序
// 10 --> 0
[arr sortUsingComparator:^NSComparisonResult(__strongid obj1,__strong id obj2){
return [obj1 intValue] < [obj2intValue];
}];
NSLog(@"%@", [arrdebugDescription]);
比如如果Array中都是NSString,而NSSString本身提供了compare方法,则直接使用即可,用法如下。
NSArray *array = @[@"abc",@"acc",@"adc",@"Abc",@"111"];
//compare:区分字母大小写
NSArray *testArr = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@",[testArr description]);
//caseInsensitiveCompare不区分大小写
NSArray *testArr2 = [array sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSLog(@"%@",[testArr description]);
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8