5

NSMutableArray があり、ユーザーのハイスコアが保存されています。項目を数値で並べ替えたい (数値は NSStrings に格納されています)
例:
4,2,7,8
から
2,4,7,8へ
データが NSStrings に格納されている場合、これを行う最も簡単な方法は何ですか?

4

5 に答える 5

20

このコードはそれを行います:

//creating mutable array
NSMutableArray *myArray = [NSMutableArray arrayWithObjects:@"4", @"2", @"7", @"8", nil];

//sorting
[myArray sortUsingComparator:^NSComparisonResult(NSString *str1, NSString *str2) {
    return [str1 compare:str2 options:(NSNumericSearch)];
}];

//logging
NSLog(@"%@", myArray);

ブロックを使用します。ターゲット OS がそれをサポートしていることを確認してください (iOS では 4.0、OSX では 10.6 です)。

于 2012-06-24T21:57:47.157 に答える
1

NSMutableArrayメソッドsortUsingSelector:はそれを行う必要があります:

[scoreArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)]

それをする必要があります。

于 2012-06-24T21:39:57.853 に答える
1

このコードは機能します。私はそれを試してみました:

NSMutableArray *unsortedHighScores = [[NSMutableArray alloc] initWithObjects:@"4", @"2", @"7", @"8", nil];

NSMutableArray *intermediaryArray = [[NSMutableArray alloc] init];

for(NSString *score in unsortedHighScores){
    
    NSNumber *scoreInt = [NSNumber numberWithInteger:[score integerValue]];
    [intermediaryArray addObject:scoreInt];
}

NSArray *sortedHighScores = [intermediaryArray sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@", sortedHighScores);

出力は次のとおりです。

2

4

7

8

コードについて質問がある場合は、コメントで質問してください。お役に立てれば!

于 2012-06-24T21:34:06.763 に答える
1

配列がキーの数値を含む nsdictionaries の場合number

isKeyAscending = isKeyAscending ? NO : YES;

[yourArray sortUsingComparator:^NSComparisonResult(NSDictionary *obj1, NSDictionary *obj2) {

    NSString *str1 = [obj1 objectForKey:@"number"];
    NSString *str2 = [obj2 objectForKey:@"number"];

    if(isKeyAscending) { //ascending order
        return [str1 compare:str2 options:(NSNumericSearch)];
    } else { //descending order
        return [str2 compare:str1 options:(NSNumericSearch)];
    }
}];

//yourArray is now sorted
于 2015-04-12T10:37:57.633 に答える
0

Darshit Shahからの答えはスムーズに

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc]initWithKey:@"rank"  ascending:YES selector:@selector(localizedStandardCompare:)];
于 2021-06-02T23:18:11.587 に答える