Как я могу сортировать NSMutableDictionary со значением ключа?

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

Ответ 1

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

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

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

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

Ответ 2

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

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];
}

Ответ 3

NSDictionary *yourDictionary;
NSArray *sortedKeys = [yourDictionary.allKeys sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES]]];
NSArray *sortedValues = [yourDictionary objectsForKeys:sortedKeys notFoundMarker:@""];