Вопрос

Предположим, у меня есть следующие данные в моей игре.Я разработал игру в 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top