できることは、スコアに基づいてプレーヤーの並べ替えられた配列を取得し、各プレーヤーの辞書を作成して別の配列に追加することです。おそらく次のようなものです(私は新しいリテラル構文を使用していますが、必要に応じて古いものを使用してください):
NSDictionary *scores = @{
@"Stan" : @7500,
@"Mark" : @5000,
@"John" : @7500,
@"Bill" : @10000
};
NSArray *sp = [scores keysSortedByValueUsingComparator:^(id obj1, id obj2){
return [obj2 compare:obj1];
}];
NSMutableArray *players = [NSMutableArray arrayWithCapacity:0];
for (NSString *p in sp) [players addObject:@{ @"name":p, @"score":scores[p] }];
今、あなたのplayers
配列は次のとおりです。
(
{
name = Bill;
score = 10000;
},
{
name = John;
score = 7500;
},
{
name = Stan;
score = 7500;
},
{
name = Mark;
score = 5000;
}
)
PS。キーがプレーヤー名である辞書を保持するのは良い考えではありません.2人の異なるJohn
プレーヤーがいると考えてください...その場合はどうなりますか? また、より良い解決策は、Player
クラスを作成し、そのデータ (スコア、名前など) をプロパティとして保持することです。