給數組NSMutableArray排序

在iOS的Cocoa框架上,給NSMutableArray內容排序。

方法一,使用Comparator

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元素本身的方法。

比如如果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]);

所屬標簽

無標簽

25选5玩法中奖