Есть ли простой способ сортировки списка (массива словарей) по значению ключа?
-
21-08-2019 - |
Вопрос
Мне нужно изменить порядок списка (массива словарей) по значению ключа.
В этом примере содержимого я хотел бы упорядочить по значению имени ключа (Мэтт, Джо):
<dict>
<key>Name</key>
<string>Matt</string>
<key>Details</key>
<string>Me</string>
</dict>
<dict>
<key>Name</key>
<string>Joe</string>
<key>Details</key>
<string>You</string>
</dict>
Есть ли простой способ?Я не хочу делать это в коде каждый раз при запуске приложения, я просто хочу делать это с файлом данных.
Есть идеи?
Рад использовать любой инструмент, чтобы сделать это:параметры ninja для сортировки в командной строке, редакторе plist, текстовом редакторе или чем-то еще.
Решение 5
В итоге я написал пятистрочный PHP-скрипт, чтобы изменить их порядок.Думаю, мне еще предстоит многому научиться какао, прежде чем я смогу делать с ним что-то так быстро и комфортно.
Спасибо за ваши ответы.
Другие советы
Это еще одно решение для кодирования, но было бы несложно создать базовый инструмент командной строки, который бы включал его:
NSArray* arrayOfDictionaries; //the array we want to sort
NSSortDescriptor* nameSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES];
NSArray* sortedArray = [arrayOfDictionaries sortedArrayUsingDescriptors:[NSArray arrayWithObject:nameSortDescriptor]];
[nameSortDescriptor release];
Я написал небольшой скрипт Python, который читает стандартный ввод и записывает в стандартный вывод:
# sortplist.py
import plistlib
import sys
plist = plistlib.readPlist(sys.stdin)
plistlib.writePlist(plist, sys.stdout)
Итак, просто сделай python sortplist.py <original.plist >sorted.plist
.
// Our key array
NSMutableArray *unsortedKeys = [NSMutableArray array];
// Assume we have some array of dictionaries
for( NSDictionary *dict in dictionaryArray ) {
NSString *key = [dict objectForKey:@"Name"];
if( key )
[unsortedKeys addObject:key];
}
NSArray *sortedKeys = [unsortedKeys sortedArrayUsingSelector:@selector(compare:)];
// Do things with the keys...
Python — ваш друг: http://effbot.org/zone/element-sort.htm :-)