【问题标题】:Sorting a NSMutableArray [duplicate]对 NSMutableArray 进行排序
【发布时间】:2016-12-02 12:00:18
【问题描述】:

我目前正在通过此代码解析我的NSArray

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES];
[myArray sortUsingDescriptors:[NSArray arrayWithObject:sort]];

而 myArray 对象是 Ep 1 到 Ep 50,未排序。问题在于具有单个数字值的数字。而且我不能为其添加 0 前缀,因为数组是动态的,并且某些对象可能会导致崩溃。

我期待这个:

第 1 集 第 2 集 第 3 集..... 第 10 集 第 11 集 第 12 集 13.... 第 20 集 第 21 集...

但我的输出是这样的

第 1 集 第 10 集 第 11 集 第 12 集 第 13 集....... 第 2 集 第 20 集 第 21 集 第 22 集.... 第 3 集 第 30 集 第 31 集......

现在,如何正确排序?

【问题讨论】:

    标签: ios objective-c sorting nsarray


    【解决方案1】:

    您需要像这样使用NSNumericSearch 选项和sortedArrayUsingComparator

    如果您的数组包含自定义对象。

    NSArray *sortedArray = [myArray sortedArrayUsingComparator:^(Episode *ep1, Episode *ep2) {
         return [ep1.title compare:ep2.title options:NSNumericSearch];
    }];
    

    如果您的数组包含NSDictionary

    NSArray *sortedArray = [myArray sortedArrayUsingComparator:^(NSDictionary *dic1, NSDictionary *dic2) {
         return [(NSString*)[dic1 objectForKey:@"title"] compare:(NSString*)[dic2 objectForKey:@"title"] options:NSNumericSearch];
    }];
    

    【讨论】:

    • 小错误:obj1.title => ep1.title.
    • @Larme Typo 错误,感谢指正:)
    猜你喜欢
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多