您可以做的是根据他们的分数获得一个排序的玩家数组,然后为每个玩家创建一个字典并将它们附加到另一个数组中。可能是这样的(我正在使用新的文字语法,如果合适的话使用旧的):
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
类并将其数据(分数、名称等)保留为属性。