В маленькой игре у меня есть два массива.
Если игрок получает оценку выше определенного значения, его имя и оценка выводятся через
UILabel.
NSArray * namesArray = [mainArray objectForKey: @ "names"];
NSArray * highScoresArray = [mainArray objectForKey: @ "scores"];
Мне нужно, чтобы UILabels отображался с наибольшим количеством очков в порядке убывания с соответствующим именем. Я использовал NSSortDescriptor для числовой сортировки значений партитуры.
NSSortDescriptor * sortDescriptor;
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey: @ "self"
по возрастанию: НЕТ] 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++;
}
Это работает достаточно хорошо, так как результаты теперь отображаются в порядке убывания.
Проблема в том, что мне нужно, чтобы соответствующее имя также отображалось в новом отсортированном порядке.
Я не могу использовать тот же селектор сортировки, и я не хочу сортировать их по алфавиту, им нужно
, чтобы соответствовать значениям имени / оценки, которые были введены первыми.
Заранее спасибо