In meinem Code habe ich eine Struktur wie die folgende:
%Vor%Ich erstelle jetzt ein Array von 10 Objekten mit zufälligen Namen und Zufallszahlen.
Gibt es einen einfachen Weg zu einem? a) sortiere sie alphabetisch b) sortiere sie numerisch in aufsteigender Reihenfolge
Grundsätzlich wird es ein Array wie folgt geben:
%Code%.
Jedes Objekt hat das Attribut [Object1, Object2, Object3]
und name
, und ich möchte, dass die Objekte in dieser Liste nach diesen beiden Attributen sortiert werden.
Lösung in Swift2 (mit dieser Lösung: StackOverflow) :
%Vor% Allerdings wurde dies in Swift3 in count
umbenannt, und ich werde nicht aufhören, das zu tun.
Wenn Sie alphabetisch und dann numerisch sortieren möchten, können Sie:
%Vor%Das erzeugt:
["A1", "A2", "A4", "A10", "B7", "C3"]
Ich habe A10
zu Ihrem Array hinzugefügt, weil ohne sie eine einfache alphabetische Sortierung ausreichend gewesen wäre. Aber ich nehme an, Sie wollten A10
nach A4
, in diesem Fall wird der numerische Vergleich die Aufgabe für Sie übernehmen.
Sie haben das Beispiel in eine Struktur mit zwei Eigenschaften geändert. In diesem Fall können Sie Folgendes tun:
%Vor%Oder genauer gesagt:
%Vor%Oder
%Vor% Beachten Sie, anstatt diese Logik in den Abschluss zu setzen, würde ich Foo
konform zu Comparable
machen:
Dadurch bleibt die Vergleichslogik im Foo
-Typ gut verkapselt, wo sie hingehört.
Dann können Sie einfach Folgendes tun, um an Ort und Stelle zu sortieren:
%Vor%Alternativ können Sie ein neues Array zurückgeben, wenn Sie das Original nicht an Ort und Stelle sortieren möchten:
%Vor%