Holen Sie sich das Array der Werte, sortieren Sie das Array und erhalten Sie den Schlüssel, der dem Wert entspricht.
Sie können mit den Werten erhalten:
NSArray* values = [myDict allValues];
NSArray* sortedValues = [values sortedArrayUsingSelector:@selector(comparator)];
Wenn aber die Sammlung ist, wie Sie in Ihrem Beispiel zeigen, (ich meine, können Sie den Wert aus dem Schlüssel entnehmen), können Sie immer die sortieren Tasten statt mit den Werten herumspielen.
Verwendung:
NSArray* sortedKeys = [myDict keysSortedByValueUsingSelector:@selector(comparator)];
Der Komparator ist eine Nachricht, Selektor, der auf das Objekt gesendet wird, die Sie bestellen möchten.
Wenn Sie Strings bestellen möchten, sollten Sie einen NSString-Vergleicher verwenden. Die NSString-Komparatoren sind: caseInsensitiveCompare oder localizedCaseInsensitiveCompare :.
Wenn keine dieser gültig für Sie ist, können Sie Ihre eigene Komparatorfunktion
[values sortedArrayUsingFunction:comparatorFunction context:nil]
Being comparatorFunction (von AppleDocumentation) nennen
NSInteger intSort(id num1, id num2, void *context)
{
int v1 = [num1 intValue];
int v2 = [num2 intValue];
if (v1 < v2)
return NSOrderedAscending;
else if (v1 > v2)
return NSOrderedDescending;
else
return NSOrderedSame;
}
Okay, also lassen Sie uns sagen, dass ich Ihre zweite Methode verwenden möchten. Was genau ist "Komparator". Es tut mir leid, dass ich diese Methode noch nie zuvor benutzt habe. Bedeutet das, dass ich meine eigene Funktion schreiben muss? Wie würde es aussehen? Vielen Dank!! – CodeGuy
Ich habe die Antwort bearbeitet, hoffe, es ist jetzt klar genug – HyLian
@HyLian Was ist, wenn NSDictionary doppelte Werte für verschiedene Schlüssel enthält. Wie werden Sie verfolgen, welcher Schlüssel abgeholt werden soll? –