This question already has answers here:
Sorting an NSMutableArray of strings by string value

(6个答案)


3年前关闭。




我目前正在通过此代码解析自己的NSArray
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES];
[myArray sortUsingDescriptors:[NSArray arrayWithObject:sort]];

myArray对象是Ep 1到Ep 50,未排序。问题出在具有一位数字值的数字中。而且我无法在其上添加0前缀,因为该数组是动态的,并且某些对象可能会导致崩溃。

我期望这样:

Ep 1 Ep 2 Ep 3 ..... Ep 10 Ep 11 Ep 12 Ep 13 .... Ep 20 Ep 21 ...

但是我的输出是这样

Ep 1 Ep 10 Ep 11 Ep 12 Ep 13 ..... Ep 2 Ep20 Ep 21 Ep 22 .... Ep 3 Ep 30 Ep 31 ......

现在,如何正确分类?

最佳答案

您需要像这样将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];
}];

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

10-10 17:11