2017-04-12 3 views
0

Sortierte Funktion in Swift hat unsachgemäße Sortierung.abnorme Sortierung in Swift

unsortierter Gegenstände

[ "9", "7", "3", "8", "6", "2", "4", "10", "5"]

sortierten Objekte

["10", "2", "3", "4", "5", "6", "7", "8", „9 "]

Code:

print("unsorted objects",students.map{($0 as! EX_STUDENT).roll_no!}) 

studentList = students.sorted{($0 as! EX_STUDENT).roll_no! < ($1 as! EX_STUDENT).roll_no!} 

print("sorted objects",studentList.map{($0 as! EX_STUDENT).roll_no!}) 

warum ist 10 bei der 0. Index?

+2

http://stackoverflow.com/a/39748677/4601170 –

+3

Sie Strings werden sortieren, nicht integer –

+0

wahr, weil ich alphanumerische Sortierung werden soll, und Ich will es auch in aufsteigender Reihenfolge. ex roll no kann sein RX00012, RX00034 – iSwift

Antwort

1

Sie können localizedStandardCompare benutzen, um Ihre Strings numerisch zu sortieren:

let numbers = ["9", "7", "3", "8", "6", "2", "4", "10", "5"] 

let numericSort = numbers.sorted{$0.localizedStandardCompare($1) == .orderedAscending} 

numericSort // ["2", "3", "4", "5", "6", "7", "8", "9", "10"] 
+0

es funktioniert nicht, gleiche Ausgabe – iSwift

+0

Definieren Sie, was 'nicht funktioniert'. Sortiert ist eine nicht-mutierende Methode –

+0

Ich weiß das schon, wenn Sie meinen Code bemerkt haben, gibt es zwei Referenzen Studenten und Studentenliste. Ich sortiere Studenten sortierte Objekte zu studentList – iSwift

Verwandte Themen