Ich habe Probleme damit, eine Reihe von Wörterbüchern zu sortieren.
Meine Wörterbücher haben einige Werte von Interesse, Preis, Popularität usw.
Irgendwelche Vorschläge?
Antworten:
Verwenden Sie NSSortDescriptor
wie folgt ..
NSSortDescriptor * descriptor = [[NSSortDescriptor alloc] initWithKey:@"interest" ascending:YES];
stories = [stories sortedArrayUsingDescriptors:@[descriptor]];
recent = [stories copy];
stories
ist das Array, das Sie sortieren möchten. recent
ist ein weiteres veränderbares Array, das Wörterbuchwerte sortiert hat. Ändern Sie den @"interest"
mit dem Schlüsselwert, nach dem Sie sortieren müssen.
Alles Gute
[array sortUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"YOUR-KEY" ascending:YES], nil]];
Ich möchte es nicht wirklich in mehrere Zeilen aufteilen. Für mich ist es schon einfach genug.
Sie können einfach vom übergeordneten Element zur erforderlichen untergeordneten Eigenschaft wechseln. Zum Beispiel
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"parent.child.child" ascending:YES];
Update, sortUsingDescriptors ist jetzt sortiertArrayUsingDescriptors
Also, es ist wie:
items = [items sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
[NSArray sortedArrayUsingDescriptors]
und - [NSMutableArray sortUsingDescriptors]
. Die neueste Version ist noch vorhanden und wurde nicht ersetzt.
Schreiben Sie eine Sortierfunktion, die die relevanten Felder in zwei Wörterbüchern vergleicht. Wenn Sie diese Version haben, können Sie beispielsweise NSArray#sortedArrayUsingFunction:context:
Ihr Array sortieren.
Siehe NSArray-Klassenreferenz