关于NSArray 排序的问题
来源:互联网 发布:91取名软件 编辑:程序博客网 时间:2024/05/21 21:50
第一种,利用数组的sortedArrayUsingComparator调用 NSComparator ,obj1和obj2指的数组中的对象
NSComparator cmptr = ^(id obj1, id obj2){ if ([obj1 integerValue] > [obj2 integerValue]) { return (NSComparisonResult)NSOrderedDescending; } if ([obj1 integerValue] < [obj2 integerValue]) { return (NSComparisonResult)NSOrderedAscending; } return (NSComparisonResult)NSOrderedSame; }; NSArray *sortArray = [[NSArray alloc] initWithObjects:@"1",@"3",@"4",@"7",@"8",@"2",@"6",@"5",@"13",@"15",@"12",@"20",@"28",@"",nil]; //排序前 NSMutableString *outputBefore = [[NSMutableString alloc] init]; for(NSString *str in sortArray){ [outputBefore appendFormat:@"]; } NSLog(@"排序前:%@",outputBefore); [outputBefore release]; //第一种排序 NSArray *array = [sortArray sortedArrayUsingComparator:cmptr]; NSMutableString *outputAfter = [[NSMutableString alloc] init]; for(NSString *str in array){ [outputAfter appendFormat:@"]; } NSLog(@"排序后:%@",outputAfter); [outputAfter release];
第二种 排序方法 利用sortedArrayUsingFunction 调用 对应方法customSort,这个方法中的obj1和obj2分别是指数组中的对象
NSInteger customSort(id obj1, id obj2,void* context){ if ([obj1 integerValue] > [obj2 integerValue]) { return (NSComparisonResult)NSOrderedDescending; } if ([obj1 integerValue] < [obj2 integerValue]) { return (NSComparisonResult)NSOrderedAscending; } return (NSComparisonResult)NSOrderedSame; } NSArray *sortArray = [[NSArray alloc] initWithObjects:@"1",@"3",@"4",@"7",@"8",@"2",@"6",@"5",@"13",@"15",@"12",@"20",@"28",@"",nil]; //排序前 NSMutableString *outputBefore = [[NSMutableString alloc] init]; for(NSString *str in sortArray){ [outputBefore appendFormat:@"]; } NSLog(@"排序前:%@",outputBefore); [outputBefore release]; NSArray *array = [sortArray sortedArrayUsingFunction:customSort context:nil]; NSMutableString *outputAfter = [[NSMutableString alloc] init]; for(NSString *str in array){ [outputAfter appendFormat:@"]; } NSLog(@"排序后:%@",outputAfter); [outputAfter release];
第三种 利用sortUsingDescriptors调用NSSortDescriptor
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"price" ascending:NO];//其中,price为数组中的对象的属性,这个针对数组中存放对象比较更简洁方便 NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:&sortDescriptor count:1]; [_totalInfoArray sortUsingDescriptors:sortDescriptors]; [_airListView refreshTable:_totalInfoArray]; [sortDescriptor release]; [sortDescriptors release];
第四种 block 排序
直接上代码:
NSArray *array = [NSArray arrayWithObjects:@"71", @"16", @"51", @"104", @"13",@"2",@"1", nil]; array = [array sortedArrayUsingComparator:(NSComparator)^(id obj1, id obj2) { return (arc4random() % 3) - 1; }]; // NSLog(@"array:%@", array); NSArray *sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) { if ([obj1 integerValue] > [obj2 integerValue]) { return (NSComparisonResult)NSOrderedAscending; } if ([obj1 integerValue] < [obj2 integerValue]) { return (NSComparisonResult)NSOrderedDescending; } return (NSComparisonResult)NSOrderedSame; }]; sortedArray 是排好序的时间对象数组 // 按时间排序 NSArray *sortedArray = [srcArrary sortedArrayUsingComparator:^(id obj1, id obj2) { NSComparisonResult result = [obj1 compare:obj2]; switch(result) { case NSOrderedAscending: return NSOrderedDescending; case NSOrderedDescending: return NSOrderedAscending; case NSOrderedSame: return NSOrderedSame; default: return NSOrderedSame; } // 时间从近到远(远近相对当前时间而言) }];
NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", nil]; array = [array sortedArrayUsingComparator:(NSComparator)^(id obj1, id obj2) { return (arc4random() % 3) - 1; }]; NSLog(@"array:%@", array);
0 0
- 关于NSArray的排序问题
- 关于NSArray 排序的问题
- 关于NSArray的几种排序:
- NSArray排序问题
- NSArray 的排序
- NSArray的排序方法
- nsarray的排序
- NSArray的排序方法
- ios的NSArray排序
- NSArray的排序
- ios的NSArray排序
- NSArray的sorting排序
- NSArray的排序方法
- NSArray的排序函数
- NSArray的排序
- Foundation NSArray的排序
- 关于NSArray的copy
- NSArray的排序功能sortedArrayUsingSelector
- 使用Cardme读取安卓IOS导出的vcf格式通讯录
- Light oj 1037 - Agent 47(状压dp)
- poj 1144 Network 图的连通性-关节点个数
- 如何从源代码构建 Go 1.5 开发环境
- 腾讯笔试题之协变量中重要变量的衡量
- 关于NSArray 排序的问题
- Python 日期时间
- JSP url Mapping
- Android SDK Manager 更新代理配置
- mac : Java开发环境的设置
- 关于java按位操作运算
- android 源码启动camera
- 登录页面跳转到首页(含有tabBar)
- superputty 传输文件步骤