本文正对数组内容为其他类对象和字符串时,进行了排序操作。具体看看下面代码:
DeviceInfo.h
@interface DeviceInfo : NSObject
@property (nonatomic, assign) NSInteger sequenceID;
@property (nonatomic, strong) NSString *deviceID;
@property (nonatomic, strong) NSString *deviceName;
@end
DeviceInfo.m
#import "DeviceInfo.h"
@implementation DeviceInfo
@end
NSArrayCompareTest.h"
#import <Foundation/Foundation.h>
@interface NSArrayCompareTest : NSObject
-(void)testCompare;
@end
NSArrayCompareTest.m"
@implementation NSArrayCompareTest
-(id)init{
self=[super init];
if(self){
}
return self;
}
-(void)testCompare{
DeviceInfo *deviceInfo1 = [[DeviceInfo alloc] init];
deviceInfo1.sequenceID=1;
deviceInfo1.deviceID=@"deviceID_1";
deviceInfo1.deviceName=@"deviceName_1";
DeviceInfo *deviceInfo2 = [[DeviceInfo alloc] init];
deviceInfo2.sequenceID=2;
deviceInfo2.deviceID=@"deviceID_2";
deviceInfo2.deviceName=@"deviceName_2";
DeviceInfo *deviceInfo3 = [[DeviceInfo alloc] init];
deviceInfo3.sequenceID=3;
deviceInfo3.deviceID=@"deviceID_3";
deviceInfo3.deviceName=@"deviceName_3";
NSMutableArray *array = [NSMutableArray arrayWithObjects:deviceInfo1, deviceInfo2, deviceInfo3,nil];
NSSortDescriptor *sortDescriptor1 = [NSSortDescriptor sortDescriptorWithKey:@"sequenceID" ascending:YES];
NSSortDescriptor *sortDescriptor2 = [NSSortDescriptor sortDescriptorWithKey:@"deviceID" ascending:YES];
NSArray *tempArray = [array sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sortDescriptor1, sortDescriptor2, nil]];
for(NSInteger i = 0; i < [tempArray count]; i++)
{
NSLog(@"%ld--------%@\n", [[tempArray objectAtIndex:i] sequenceID], [[tempArray objectAtIndex:i] deviceName]);
}
//对字符串数组进行排序
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:str];
}
NSLog(@"排序前:%@\n",outputBefore);
for(NSInteger i = 0; i < [sortArray count]; i++)
{
NSLog(@"%@", [sortArray objectAtIndex:i] );
}
//第一种排序
NSArray *stringArray = [sortArray sortedArrayUsingComparator:cmptr];
NSMutableString *outputAfter = [[NSMutableString alloc] init];
for(NSString *str in stringArray){
[outputAfter appendFormat:str];
}
NSLog(@"排序后:%@\n",outputAfter);
for(NSInteger i = 0; i < [sortArray count]; i++)
{
NSLog(@"%@", [sortArray objectAtIndex:i] );
}
}
@end
运行代码:
NSLog(@"-------------NSArray_Sort_start--------------");
NSArrayCompareTest *sortTEST=[[NSArrayCompareTest alloc] init];
[sortTEST testCompare];
NSLog(@"-------------NSArray_Sort_end--------------");
结果:
2015-02-13 11:32:58.918 IOSStudy-01[5119:69341] -------------NSArray_Sort_start--------------
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 1--------deviceName_1
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 2--------deviceName_2
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 3--------deviceName_3
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 排序前:134782651315122028
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 1
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 3
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 4
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 7
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 8
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 2
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 6
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 5
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 13
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 15
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 12
2015-02-13 11:32:58.919 IOSStudy-01[5119:69341] 20
2015-02-13 11:32:58.920 IOSStudy-01[5119:69341] 28
2015-02-13 11:32:58.920 IOSStudy-01[5119:69341] 排序后:123456781213152028
2015-02-13 11:32:58.920 IOSStudy-01[5119:69341] 1
2015-02-13 11:32:58.923 IOSStudy-01[5119:69341] 3
2015-02-13 11:32:58.923 IOSStudy-01[5119:69341] 4
2015-02-13 11:32:58.923 IOSStudy-01[5119:69341] 7
2015-02-13 11:32:58.923 IOSStudy-01[5119:69341] 8
2015-02-13 11:32:58.923 IOSStudy-01[5119:69341] 2
2015-02-13 11:32:58.923 IOSStudy-01[5119:69341] 6
2015-02-13 11:32:58.924 IOSStudy-01[5119:69341] 5
2015-02-13 11:32:58.924 IOSStudy-01[5119:69341] 13
2015-02-13 11:32:58.924 IOSStudy-01[5119:69341] 15
2015-02-13 11:32:58.924 IOSStudy-01[5119:69341] 12
2015-02-13 11:32:58.924 IOSStudy-01[5119:69341] 20
2015-02-13 11:32:58.924 IOSStudy-01[5119:69341] 28
2015-02-13 11:32:58.925 IOSStudy-01[5119:69341] -------------NSArray_Sort_end--------------