This question already has answers here:
Sorting an NSMutableArray of strings by string value
(6个答案)
3年前关闭。
我目前正在通过此代码解析自己的
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 ......
现在,如何正确分类?
如果您的数组包含
(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