2016-04-18 8 views
1

ich möchte meine Tabelle zurückgeben. ich habe diesen Code Teil:Im Wechsel zwischen der Sortierung in aufsteigender und absteigender Reihenfolge auf eine Schaltfläche klicken

func ReSort() { 
    CoreDataItems.sortInPlace({$0.RowName< $1.RowName}) 
    tableView.reloadData() 
} 

Diese Funktion nach dem Drücken einer Taste aufrufen wird. aber wie kann ich dieses Problem lösen, dass, wenn ich die Taste zum ersten Mal drücken, wird die Sortierfunktion es wie auf diese Weise sortieren:

$0.RowName < $1.RowName 

und das zweite Mal wie folgt aus:

$0.RowName > $1.RowName 

und bald.

Antwort

1

Sie müssen den aktuellen Status der Sortierung in einer Instanzvariablen speichern, z.

var sortAscending : Bool = true 

Jetzt können Sie dies tun:

func ReSort() { 
    CoreDataItems.sortInPlace({sortAscending ? $0.RowName < $1.RowName : $0.RowName > $1.RowName}) 
    sortAscending = !sortAscending 
    tableView.reloadData() 
} 

Der Wert von sortAscending zwischen > und < im Vergleich auswählen wird. Die Zuordnung

sortAscending = !sortAscending 

nach der Sortierung erfolgt wechselt zwischen true und false.

eine kürzere, aber etwas weniger lesbaren Code, der die gleiche Wirkung hat verwendet == Betreiber als Ersatz für invertierte XOR auf Bool Werte:

func ReSort() { 
    CoreDataItems.sortInPlace({sortAscending == ($0.RowName < $1.RowName) }) 
    sortAscending = !sortAscending 
    tableView.reloadData() 
} 
+0

Dank, das funktioniert gut :) gibt es eine Möglichkeit, variable insteads zu verwenden der Konstante RowName? – Stack108

+0

@ Stack108 Gern geschehen! Ich habe deine [andere Frage] (http://stackoverflow.com/q/36710670/335858) gesehen, also nehme ich an, du kennst die Antwort. – dasblinkenlight

Verwandte Themen