0

NSStringオブジェクトとNSNumberオブジェクトを持つ2つのNSMutableArrayがあります。具体的には、次のとおりです。

NSMutableArray * points; // NSNumber objects
NSMutableArray * players; //NSString objects

そして、ポイントのオブジェクトに従って両方を並べ替える必要があります。私はこれを1つに基づいて2つのNSMutableArrayを注文しようとしましたが、NSArrayのために役に立ちませんでした。NSMutableArraysでこれを行う必要があります。これを使ってポイントを並べ替えます

NSSortDescriptor *highestToLowest = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:NO];
[points sortUsingDescriptors:[NSArray arrayWithObject:highestToLowest]];
4

1 に答える 1

3

プレイヤークラスを紹介すべきだと思います

@interface Player : NSObject
@property(strong) NSString *name;
@property(strong) NSNumber *points;
@end

情報を別々の配列に保持する代わりに、各プレーヤーのPlayerオブジェクトを作成し、ポイントを内部に保持するようになりました。これで、すべてのプレーヤーを配列に入れて、簡単に並べ替えることができます。

[players sortUsingComparator: ^(Player *p1, Player *p2){
    if (p1.points < p2.points)
        return NSOrderedAscending;   
    else if(p1.points > p2.points)
        return NSOrderedDescending 
    return NSOrderedSame;
}];
于 2013-01-16T22:48:38.103 に答える