2015-06-10 56 views
1

我在排序時遇到問題。使用NSSortDescriptor排序

的數據是這樣的

NSArray* testArr = @[@{@"key":@"aaa", @"value":@"asdfaf"}, 
        @{@"key":@"baa", @"value":@"bsdfaf"}, 
        @{@"key":@"!!aaa", @"value":@"adsfdfaf"}, 
        @{@"key":@"123aaa", @"value":@"cecdfaf"}, 
        @{@"key":@"@@#21", @"value":@"a42faf"}, 
        @{@"key":@"ace", @"value":@"a123faf"}, 
        @{@"key":@"321!!", @"value":@"123sdfaf"}, 
        ]; 

而且NSSortDescriptor是這樣

NSLocale *locale = [NSLocale autoupdatingCurrentLocale];   
NSSortDescriptor *sortUsingNameDescriptor = [[NSSortDescriptor alloc] initWithKey:@"key" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) { 

    NSStringCompareOptions comparisonOptions = NSCaseInsensitiveSearch | NSWidthInsensitiveSearch | NSForcedOrderingSearch | NSNumericSearch; 
    NSRange stringRange = NSMakeRange(0, ((NSString *)obj1).length); 

    return [(NSString*)obj1 compare:(NSString*) obj2 options:comparisonOptions range:stringRange locale:locale]; 
    }]; 

這就是結果。

{ 
    key = "!!aaa"; 
    value = adsfdfaf; 
}, 
    { 
    key = "@@#21"; 
    value = a42faf; 
}, 
    { 
    key = 123aaa; 
    value = cecdfaf; 
}, 
    { 
    key = "321!!"; 
    value = 123sdfaf; 
}, 
    { 
    key = aaa; 
    value = asdfaf; 
}, 
    { 
    key = ace; 
    value = a123faf; 
}, 
    { 
    key = baa; 
    value = bsdfaf; 
} 

但我想這樣

{ 
    key = aaa; 
    value = asdfaf; 
}, 
    { 
    key = ace; 
    value = a123faf; 
}, 
    { 
    key = baa; 
    value = bsdfaf; 
}, 
{ 
    key = 123aaa; 
    value = cecdfaf; 
}, 
{ 
    key = "321!!"; 
    value = 123sdfaf; 
}, 
{ 
    key = "!!aaa"; 
    value = adsfdfaf; 
}, 
{ 
    key = "@@#21"; 
    value = a42faf; 
} 

它是字母,數字和特殊字符順序排序。 我該怎麼做

回答

1
NSSortDescriptor* sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:nil ascending:NO selector:@selector(localizedCompare:)]; 
NSArray* sortedArray = [inFileTypes sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 
+0

它不工作,因爲上行是NO。如果是,結果是一樣的。謝謝:) –

+0

如果你想逆序排列數組對象,那麼[此鏈接](http://stackoverflow.com/a/586483/2771713)將幫助你。 –

相關問題