Ich habe ein Array von Objekten, die aus zwei Eigenschaften bestehen: eine NSString
und eine BOOL
. Ich möchte dieses Array so sortieren, dass alle BOOL
s, die YES
sind, vor allen Bools angezeigt werden, die NO
sind. Dann hätte ich gerne für die Liste der Objekte, die die BOOL YES
alphabetisiert haben und ich möchte auch, dass die Objekte mit der NO
alphabetisiert werden. Gibt es eine Art von Bibliothek, die dies in objektiven c erreichen kann? Wenn nicht, was ist der effizienteste Weg, dies zu tun?Sortieren Array basierend auf zwei Parametern
7
A
Antwort
20
können Sie NSSortDescriptor
s verwenden, um die Sortierung zu tun:
// Set ascending:NO so that "YES" would appear ahead of "NO"
NSSortDescriptor *boolDescr = [[NSSortDescriptor alloc] initWithKey:@"boolField" ascending:NO];
// String are alphabetized in ascending order
NSSortDescriptor *strDescr = [[NSSortDescriptor alloc] initWithKey:@"strField" ascending:YES];
// Combine the two
NSArray *sortDescriptors = @[boolDescr, strDescr];
// Sort your array
NSArray *sortedArray = [myArray sortedArrayUsingDescriptors:sortDescriptors];
Sie können mehr lesen here mit Deskriptoren zu sortieren.
1
Nachschlagen von NSSortDescriptors. Erstellen Sie zwei, einen für die Zeichenfolge, einen für die Bool. Dann füge beide zu einem Array hinzu. Verwenden Sie dann die NSArray-Methode sortedArrayWiyhDescriptors.
3
Eine Alternative zu sortieren Deskriptoren ist ein NSComparator
zu verwenden:
NSArray *myObjects = ... // your array of "Foo" objects
NSArray *sortedArray = [myObjects sortedArrayUsingComparator:^(Foo *obj1, Foo *obj2) {
if ((obj1.boolProp && obj2.boolProp) || (!obj1.boolProp && !obj2.boolProp)) {
// Both bools are either YES or both are NO so sort by the string property
return [obj1.stringProp compare:obj2.stringProp];
} else if (obj1.boolProp) {
// first is YES, second is NO
return NSOrderedAscending;
} else {
// second is YES, first is NO
return NSOrderedDescending;
}
)];
Bitte beachten Sie, dass ich die letzten zwei nach hinten haben. Wenn dies die Nein-Werte vor den Ja-Werten sortiert, vertauschen Sie die letzten beiden Rückgabewerte.
Verwandte Themen
- 1. PHP mehrdimensionales Array basierend auf Schlüssel sortieren?
- 2. Sortieren von Dokumenten basierend auf Array-Feldgröße
- 3. Sortieren Array basierend auf Objekt Attribut - Javascript
- 4. Objekt-Array basierend auf einem anderen Array von Schlüsseln sortieren
- 5. Sortieren auf VerzeichnisSearcher basierend auf zwei Eigenschaften in C#
- 6. Liste sortieren basierend auf Muster
- 7. C++ Sortieren von Objekten basierend auf zwei Datenelementen
- 8. Sortierung basierend auf zwei Feldern
- 9. Sortieren Bilder basierend auf Inhalt
- 10. Sortieren SQL Array basierend auf Monate von String-Typ
- 11. JSON-Daten basierend auf einem anderen Array sortieren
- 12. Sortieren mehrdimensionales Array basierend auf dem Wert eines bestimmten Index
- 13. Javascript sortieren Baumebenen Attribut basierend auf Art
- 14. Crystal Reports Programmatisch sortieren mit zwei übergebenen Parametern
- 15. PHP Mehrdimensionales Array nach zwei Kriterien sortieren
- 16. Vergleichen und Sortieren Array
- 17. Erstellen einer Factory-Methode basierend auf Parametern
- 18. Set Likes basierend auf 2 Parametern
- 19. String basierend auf Regex mit Parametern generieren
- 20. Build linq Abfrage basierend auf Parametern
- 21. Rails Instanzvariable Caching basierend auf Parametern
- 22. sortieren ein Array Basis auf Schlüssel
- 23. PHP Splitting Array in zwei Arrays basierend auf Wert
- 24. Koordiniere zwei Bereichseingänge basierend auf einem Array von Ebenen
- 25. Sortieren CSV basierend auf einer bestimmten Spalte?
- 26. Liste der Wörterbücher basierend auf Schlüsseln sortieren
- 27. Objekte basierend auf Double-Werten sortieren?
- 28. Wie Ergebnis sortieren basierend auf passende
- 29. Solr - Suchresultat basierend auf Facettenzählung sortieren
- 30. Sortierung Array basierend auf dem Wert