按键排序数组

时间:2010-01-07 21:30:02

标签: iphone arrays sorting

我在一个小游戏中使用了两个数组。

如果玩家获得的分数高于某个值,则他们的姓名&得分通过输出 一个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++;
    }

这很好用,因为分数现在按降序显示。

问题是我需要相应的名称也按照新的排序顺序显示。

我不能使用相同的排序选择器,我不会按字母顺序排序,他们需要

对应于首次输入的名称/分数值。

提前致谢

1 个答案:

答案 0 :(得分:1)

您需要将名称和分数放在一起作为NSDictionary的单个实例,然后拥有NSDictionary实例的NSArray。然后,当您按分数排序时,您可以提取相应的名称。