Как я могу отсортировать NSMutableDictionary со значением ключа? - PullRequest
11 голосов
/ 14 ноября 2011

У меня есть NSMutableDictionary со строковыми ключами, и каждый ключ имеет свой собственный массив. Я хочу пересортировать словарь по значению ключа по алфавиту. Как я могу это сделать?

Ответы [ 3 ]

19 голосов
/ 14 ноября 2011

Словарь не сортируется по определению.

Для перебора ключей в определенном порядке можно отсортировать массив, содержащий ключи словаря.

NSArray *keys = [theDictionary allKeys];
NSArray *sortedKeys = [keys sortedArrayUsingSelector:@selector(compareMethod:)];

Существует несколькодругие sorted... методы, например, сортировка с NSComparator.Посмотрите здесь .

8 голосов
/ 14 ноября 2011

Используйте это

NSArray *myKeys = [Dict allKeys];
NSArray *sortedKeys = [myKeys sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSMutableArray *sortedValues = [[[NSMutableArray alloc] init] autorelease];

for(id key in sortedKeys) {
    id object = [Dict objectForKey:key];
    [sortedValues addObject:object];
}
2 голосов
/ 17 августа 2015
NSDictionary *yourDictionary;
NSArray *sortedKeys = [yourDictionary.allKeys sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES]]];
NSArray *sortedValues = [yourDictionary objectsForKeys:sortedKeys notFoundMarker:@""];
...