1

这是我遇到的问题:-我有一个数组

Item1,
Item2,
Item3,
Item4,
Item5,
Item6,
Item7,
....,Item11

我需要按特定顺序对这个数组进行排序,当然所有值都是“NSString”类型

如果我使用

sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)

它的排序是这样的: -

Item1,
Item10,
Item11,
Item2,
Item3,
Item4,
Item5,
Item6,
Item7,
Item8,
Item9

我可以手动从中提取数值,但我认为可能有更好的方法可以通过使用“NSComparator”来做到这一点。

4

5 回答 5

2

像这样使用它:

NSArray *arry = [[NSArray alloc] initWithObjects:@"Item1",@"Item2",@"Item3",@"Item4",@"Item5",@"Item11",@"Item10",@"Item6", nil];
NSArray *sortedStrings = [arry sortedArrayUsingSelector:@selector(localizedStandardCompare:)];
NSLog(@"sortedStrings---%@",sortedStrings);
于 2012-07-10T06:44:26.460 回答
1
NSInteger sortFile(id a, id b, void* context) {
    return [a compare:b options:NSNumericSearch];
}

[yourArray sortedArrayUsingFunction:mySort context:nil];
于 2012-07-10T06:40:15.650 回答
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);
于 2012-07-10T06:44:37.263 回答
0

试试这个:

 NSArray *sortedStrings = [yourArray sortedArrayUsingSelector:@selector(localizedStandardCompare:)];

更多sortedArrayUsingSelector

于 2012-07-10T06:37:50.433 回答
0

如果你使用sortedArrayUsingFunction:context 来实现,你可以实现任何你想要的功能:

于 2012-07-10T06:39:40.113 回答