NSArray数组内容排序

本文正对数组内容为其他类对象和字符串时,进行了排序操作。具体看看下面代码:

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--------------




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值