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 に答える