Gibt es einen einfachen Weg, um eine plist (Array von Wörterbuch) nach Schlüsselwert des Sortierens?

StackOverflow https://stackoverflow.com/questions/864412

Frage

Ich brauche eine plist (ein Array von dictonaries) von Key-Wert neu zu ordnen.

In diesem Beispiel Inhalt würde Ich mag durch den Wert für den Schlüssel-Namen (Matt, Joe) bestellen:

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

Gibt es eine einfache Art und Weise? Ich will nicht, es im Code tun, jedes Mal, wenn die App ausgeführt wird, ich es in die Datendatei nur tun will.

Irgendwelche Ideen?

Happy jedes Werkzeug zu verwenden, um dies zu erledigen. Ninja Parameter für Art auf der Kommandozeile, einen plist-Editor Texteditor oder was auch immer

War es hilfreich?

Lösung 5

Ich landete einen fünf Linie PHP-Skript zu schreiben, sie neu zu ordnen. Ich glaube, ich noch eine Menge Kakao habe zu lernen, bevor ich etwas tun kann, die schnell und bequem mit ihm.

Vielen Dank für Ihre Antworten.

Andere Tipps

Dies ist eine weitere Codierung Lösung, aber es wäre nicht schwierig sein, ein grundlegendes Kommandozeilen-Tool zu machen, die um ihn herum gewickelt:

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

Ich schrieb einen kleinen Python-Skript, das von der Standardeingabe liest und schreibt auf der Standardausgabe:

# sortplist.py
import plistlib
import sys

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

Also, nur tun 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 ist dein Freund: http://effbot.org/zone/element-sort. htm : -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top