首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NSSortDescriptor进行排序

使用NSSortDescriptor进行排序
EN

Stack Overflow用户
提问于 2015-06-10 09:11:44
回答 2查看 230关注 0票数 1

我在分拣方面有问题。

数据是这样的

代码语言:javascript
复制
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是这样的

代码语言:javascript
复制
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];
    }];

这就是结果。

代码语言:javascript
复制
{
    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;
}

但我想像这样分类

代码语言:javascript
复制
{
    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;
}

这是字母,数字和特殊的字符序列。我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-10 10:04:28

恐怕你得建立自己的比较器了。请看这个答案Easy way to put blank strings at end of sort using NSSortDescriptor?

票数 0
EN

Stack Overflow用户

发布于 2015-06-10 09:30:26

代码语言:javascript
复制
    NSSortDescriptor* sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:nil ascending:NO selector:@selector(localizedCompare:)];
NSArray* sortedArray = [inFileTypes sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30752009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档