IOS几种简单有效的数组NSArray排序方法
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:@"%@ ",str];
}
NSLog(@"排序前:%@",outputBefore);
[outputBefore release];
// 第一种排序
// 第一种,利用数组的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 *array = [sortArray sortedArrayUsingComparator:cmptr];
或
NSArray *array = [sortArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){
if ([obj1 intValue] > [obj2 intValue])
{
return NSOrderedDescending;
}
if ([obj1 intValue] < [obj2 intValue])
{
return NSOrderedAscending;
}
return NSOrderedSame;
}];
NSMutableString *outputAfter = [[NSMutableString alloc] init];
for (NSString *str in array)
{
[outputAfter appendFormat:@"%@ ", str];
}
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 *array = [sortArray sortedArrayUsingFunction:customSort context:nil];
NSMutableString *outputAfter = [[NSMutableString alloc] init];
for (NSString *str in array)
{
[outputAfter appendFormat:@"%@ ", str];
}
NSLog(@"排序后:%@",outputAfter);
[outputAfter release];
// 第三种
利用sortUsingDescriptors调用NSSortDescriptor
// 其中,price为数组中的对象的属性,这个针对数组中存放对象比较更简洁方便 数组中有字典的排序:
NSMutableArray *myMutableArr = [[[NSMutableArray alloc] init] autorelease];
NSDictionary *dicOne = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"price",@"2",@"number", nil];
NSDictionary *dicTWo = [NSDictionary dictionaryWithObjectsAndKeys:@"6",@"price",@"5",@"number", nil];
NSDictionary *dicThree = [NSDictionary dictionaryWithObjectsAndKeys:@"3",@"price",@"1",@"number", nil];
NSDictionary *dicFour = [NSDictionary dictionaryWithObjectsAndKeys:@"4",@"price",@"3",@"number", nil];
[myMutableArr addObject:dicOne];
[myMutableArr addObject:dicTWo];
[myMutableArr addObject:dicThree];
[myMutableArr addObject:dicFour];
NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"price" ascending:YES]];
[myMutableArr sortUsingDescriptors:sortDescriptors];
NSLog(@"排序后的数组%@",myMutableArr);
本文详细介绍了iOS开发中使用 NSArray 类进行数组排序的几种有效方法,包括利用 sortedArrayUsingComparator 和 sortedArrayUsingFunction 方法,以及通过 NSSortDescriptor 对包含字典的数组进行排序。文章提供了具体的代码示例,帮助开发者轻松实现数组的排序功能。
583

被折叠的 条评论
为什么被折叠?



