ios - 使用 NSSortDescriptor 排序

标签 ios sorting 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;
}

它是字母、数字和特殊字符序列。 我该怎么做

最佳答案

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

关于ios - 使用 NSSortDescriptor 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30752009/

相关文章:

ios - UIBezierPath数组动画绘制

sorting - 在 SAS 中,有没有办法使用除一个之外的所有变量进行排序?

sql - TSQL 选择排序列与 Prev Current Next

ios - 从 plist 中读取数组,只有在找到匹配项时才返回项目

iphone - NSSortDescriptor 可以使用部分键进行排序吗?

ios - 如何在 NSDate 中添加毫秒?

ios - 选择允许外部存储时,iPhone 核心数据迁移导致二进制数据丢失

ios - 上下文已经有一个协调器;无法替代

ios - 如何将负零与正零分开?

PHP - 从多个 MySQL 查询创建 XML 并按日期排序