所以我有以下代码:
NSArray *pathArray = @[@"path/Documents/page9.png",
@"path/Documents/page8.png",
@"path/Documents/page10.png",
@"path/Documents/page11.png",
@"path/Documents/page0.png",
@"path/Documents/page12.png",
@"path/Documents/page6.png",
@"path/Documents/page4.png",
@"path/Documents/page5.png",
@"path/Documents/page1.png",
@"path/Documents/page7.png",
@"path/Documents/page3.png",
@"path/Documents/page2.png"];
如果我现在使用以下方式对数组进行排序:
[pathArray sortUsingSelector:@selector(caseInsensitiveCompare:)];
数组以错误的方式排序
结果:
pathArray: (
"path/Documents/page0.png",
"path/Documents/page1.png",
"path/Documents/page10.png",
"path/Documents/page11.png",
"path/Documents/page12.png",
"path/Documents/page2.png",
"path/Documents/page3.png",
"path/Documents/page4.png",
"path/Documents/page5.png",
"path/Documents/page6.png",
"path/Documents/page7.png",
"path/Documents/page8.png",
"path/Documents/page9.png"}
具有组件"page10.png", "page11.png" and "page12.png"
的元素应该是最后三个元素。是否存在涵盖此问题的其他选择器?
如果不能怎么做呢?
答案 0 :(得分:4)
您可以使用以下方法实现自己的比较方法:
[pathArray sortUsingComparator:^(id one, id two) {
return [one compare:two options:NSCaseInsensitiveSearch | NSNumericSearch];
}
答案 1 :(得分:1)
这是因为与您的文件名不一致,例如:
path/Documents/page0.png
应该是:
path/Documents/page00.png
其中每个文件都有一个2位数字。一旦你解决了这个问题,你的排序就可以了。