Сортировка в массиве nsmutable
-
18-09-2019 - |
Вопрос
Предположим, у меня есть следующие данные в моей игре.Я разработал игру в cocos2d.
Name Score
Sagar 10000
Amit 2000
Vishal 90
Вышеуказанные данные хранятся в файле plist.
Plist имеет массив в качестве корня.
Внутри этого есть 10 словарей.
Каждый словарь имеет два значения:
- Строковые значения — Имя
- Числовое значение – оценка
Когда я использую
NSMutableArray *x=[[NSMutableArray alloc] initWithContentsOfFile:@"Sagar.plist"];
Я хочу отсортировать этот изменяемый массив по баллам.
Является ли это возможным?
Решение
Используйте дескриптор сортировки:
NSSortDescriptor * sortByScore = [[[NSSortDescriptor alloc] initWithKey:@"Score" ascending:NO] autorelease];
NSArray * descriptors = [NSArray arrayWithObject:sortByScore];
NSArray * sorted = [x sortedArrayUsingDescriptors:descriptors];
Другие советы
Видеть [NSMutableArray sortUsingDescriptors:]
, [NSMutableArray sortUsingComparator:]
и так далее.NSmutableArray предоставляет несколько методов сортировки.В этом случае я бы использовал метод дескриптора, если мне нужно было обеспечить совместимость до версии 10.5, и метод сравнения для приложений Snow Leopard.
Я считаю, что на iPhone у вас есть варианты
- (void)sortUsingFunction:(NSInteger (*)(id, id, void *))compare context:(void *)context;
и
- (void)sortUsingSelector:(SEL)comparator;
здесь есть куча приличной информации:http://www.cocoadev.com/index.pl?SortUsingSelector
РЕДАКТИРОВАТЬ:упс!увидел cocos2d и предположил, что это вопрос об iPhone.