Ver el NSMutableArray
Methode sortUsingFunction:context:
Sie müssen eine vergleichen Funktion, die zwei Objekte (vom Typ Person
da Sie zwei unterschiedliche Person
Objekte) und ein Kontext Parameter.
Die beiden Objekte sind lediglich Instanzen von Person
. Das dritte Objekt ist eine Zeichenfolge, z. B. @"birthDate".
Diese Funktion gibt ein NSComparisonResult
: Sie liefert NSOrderedAscending
si PersonA.birthDate
< PersonB.birthDate
. Es wird zurückgegeben NSOrderedDescending
si PersonA.birthDate
> PersonB.birthDate
. Schließlich wird sie zurückkehren NSOrderedSame
si PersonA.birthDate
== PersonB.birthDate
.
Dies ist ein grober Pseudocode; Sie müssen herausfinden, was es bedeutet, wenn ein Datum "weniger", "mehr" oder "gleich" zu einem anderen Datum ist (z. B. Vergleich von Sekunden seit Epoche usw.):
NSComparisonResult compare(Person *firstPerson, Person *secondPerson, void *context) {
if ([firstPerson birthDate] < [secondPerson birthDate])
return NSOrderedAscending;
else if ([firstPerson birthDate] > [secondPerson birthDate])
return NSOrderedDescending;
else
return NSOrderedSame;
}
Wenn Sie etwas Kompakteres wollen, können Sie ternäre Operatoren verwenden:
NSComparisonResult compare(Person *firstPerson, Person *secondPerson, void *context) {
return ([firstPerson birthDate] < [secondPerson birthDate]) ? NSOrderedAscending : ([firstPerson birthDate] > [secondPerson birthDate]) ? NSOrderedDescending : NSOrderedSame;
}
Das Inlining könnte dies vielleicht ein wenig beschleunigen, wenn Sie dies häufig tun.