我在一个小游戏中使用了两个数组。
如果玩家获得的分数高于某个值,则他们的姓名&得分通过输出 一个UILabel。
NSArray * namesArray = [mainArray objectForKey:@“names”];
NSArray * highScoresArray = [mainArray objectForKey:@“得分”];
我需要UILabels以降序显示最高分,并带有相应的名称。我使用NSSortDescriptor以数字方式对得分值进行排序。
NSSortDescriptor * sortDescriptor; sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@“self” 提升:NO] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedScore = [[NSArray alloc]init];
sortedScore = [scoresArray sortedArrayUsingDescriptors:sortDescriptors];
NSMutableArray *scoreLabels = [NSMutableArray arrayWithCapacity:10];
[scoreLabels addObject:scoreLabel1];
......
NSUInteger _index = 0;
for (NSNumber *_number in sortedScore) {
UILabel *_label = [scoreLabels objectAtIndex:_index];
_label.text = [NSString stringWithFormat:@"%d", [_number intValue]];
_index++;
}
这很好用,因为分数现在按降序显示。
问题是我需要相应的名称也按照新的排序顺序显示。
我不能使用相同的排序选择器,我不会按字母顺序排序,他们需要
对应于首次输入的名称/分数值。
提前致谢
答案 0 :(得分:1)
您需要将名称和分数放在一起作为NSDictionary的单个实例,然后拥有NSDictionary实例的NSArray。然后,当您按分数排序时,您可以提取相应的名称。