Question

Je dois modifier l'ordre d'un plist (un tableau de dictonaries) par la valeur clé.

Dans ce contenu exemple que je voudrais commander par la valeur pour le nom de la clé (Matt, Joe):

<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>

Y at-il un moyen facile? Je ne veux pas le faire dans le code à chaque fois que l'application est exécutée, je veux juste le faire dans le fichier de données.

Toutes les idées?

Heureux d'utiliser un outil pour réaliser ce but:. Paramètres ninja pour le tri sur la ligne de commande, un éditeur de plist, éditeur de texte ou tout

Était-ce utile?

La solution 5

Je fini par écrire un script PHP cinq lignes pour les réorganiser. Je suppose que je dois encore beaucoup de cacao à apprendre avant de pouvoir faire quelque chose qui rapidement et confortablement avec.

Merci pour vos réponses.

Autres conseils

Ceci est une autre solution de codage, mais il ne serait pas difficile de faire un outil de ligne de commande de base qui enroulé autour de lui:

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

J'ai écrit un petit script Python qui lit l'entrée standard et écrit sur la sortie standard:

# sortplist.py
import plistlib
import sys

plist = plistlib.readPlist(sys.stdin)
plistlib.writePlist(plist, sys.stdout)

Alors, il suffit de faire 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...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top