#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 );
}