Сортировка NSDictionary - PullRequest
       6

Сортировка NSDictionary

6 голосов
/ 13 февраля 2010

Мне было интересно, может ли кто-нибудь показать мне, как сортировать NSDictionary; Я хочу прочитать его, начиная с последней записи, так как ключом является дата + время, и я хочу иметь возможность добавить его к NSMutableString. Я смог прочитать его с помощью перечислителя, но не получил желаемых результатов.

Спасибо

Ответы [ 2 ]

13 голосов
/ 13 февраля 2010

Для ваших требований самый простой способ - создать новый массив из ключей, отсортировать его, а затем использовать массив для ссылки на элементы из исходного словаря.

(Обратите внимание, что myComparison - это ваш собственный метод, который сравнивает два ключа).

NSMutableArray* tempArray = [NSMutableArray arrayWithArray:[myDict allKeys]]; 
[tempArray sortedArrayUsingSelector:@selector(myComparison:)];

for (Foo* f in tempArray)
{
  Value* val = [myDict objectForKey:f];
}
0 голосов
/ 16 декабря 2013

Я собрал некоторые другие предложения в StackOverflow по сортировке NSDictionary во что-то очень компактное, которое будет сортировать по алфавиту. У меня есть файл Plist в 'path', который я загружаю в память и хочу сбросить.

NSDictionary    *glossary = [NSDictionary dictionaryWithContentsOfFile: path];
NSArray         *array1 = [[glossary allKeys] sortedArrayUsingDescriptors:@[ [NSSortDescriptor  sortDescriptorWithKey:@"" ascending:YES selector:@selector(localizedStandardCompare:)] ]];
for ( int i=0; i<array1.count; i++)
{
    NSString* key = [array1 objectAtIndex:i];
    NSString* value = [glossary objectForKey:key];
    NSLog(@"Key=%@, Value=%@", key, value );
}
...