这是我遇到的问题: - 我有一个数组
Item1,
Item2,
Item3,
Item4,
Item5,
Item6,
Item7,
....,Item11
我需要按照特定顺序对此数组进行排序,当然所有值都是'NSString'类型
如果我使用
sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)
它按如下方式排序: -
Item1,
Item10,
Item11,
Item2,
Item3,
Item4,
Item5,
Item6,
Item7,
Item8,
Item9
我可以手动从中提取数值,但我认为可能有更好的方法可以使用'NSComparator'。
答案 0 :(得分:2)
像这样使用:
NSArray *arry = [[NSArray alloc] initWithObjects:@"Item1",@"Item2",@"Item3",@"Item4",@"Item5",@"Item11",@"Item10",@"Item6", nil];
NSArray *sortedStrings = [arry sortedArrayUsingSelector:@selector(localizedStandardCompare:)];
NSLog(@"sortedStrings---%@",sortedStrings);
答案 1 :(得分:1)
NSInteger sortFile(id a, id b, void* context) {
return [a compare:b options:NSNumericSearch];
}
[yourArray sortedArrayUsingFunction:mySort context:nil];
答案 2 :(得分:1)
此代码适用于我:
NSArray *array = [NSArray arrayWithObjects:@"Item1",
@"Item10",
@"Item11",
@"Item2",
@"Item3", nil];
array = [array sortedArrayUsingComparator:^NSComparisonResult(NSString *str1, NSString *str2) {
return [str1 compare:str2 options:(NSNumericSearch)];
} ];
NSLog(@"%@", array);
答案 3 :(得分:0)
试试这个:
NSArray *sortedStrings = [yourArray sortedArrayUsingSelector:@selector(localizedStandardCompare:)];
答案 4 :(得分:0)