Dennis Garcia Dennis Garcia - 2 months ago 6
Swift Question

Sorting array alphabetically with number

myArray = [Step 6, Step 12, Step 5, Step 14, Step 4, Step 11, Step 16, Step 9,
Step 3, Step 13, Step 8, Step 2, Step 10, Step 7, Step 1, Step 15]


How can I sort this array above in this way?

[Step 1, Step 2, Step 3, Step 4, ....]


I used this function in swift
sort(&myArray,{ $0 < $1 })
but it was sorted this way

[Step 1, Step 10, Step 11, Step 12, Step 13, Step 14, Step 15, Step 16, Step 2,
Step 3, Step 4, Step 5, Step 6, Step 7, Step 8, Step 9]

Answer

Another variant is to use localizedStandardCompare:. From the documentation:

This method should be used whenever file names or other strings are presented in lists and tables where Finder-like sorting is appropriate.

This will sort the strings as appropriate for the current locale. Example:

let myArray = ["Step 6", "Step 12", "Step 10"]

let ans = sorted(myArray,{ (s1, s2) in 
    return s1.localizedStandardCompare(s2) == NSComparisonResult.OrderedAscending
})

println(ans)
// [Step 6, Step 10, Step 12]