Сортировка NSDictionary

#iphone #objective-c #cocoa-touch #ios #nssortdescriptor

#objective-c #cocoa #nsdictionary

Вопрос:

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

Спасибо

Ответ №1:

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

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

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

for (Foo* f in tempArray)
{
  Value* val = [myDict objectForKey:f];
}
  

Ответ №2:

Я объединил некоторые другие предложения в 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 );
}