I want to sort an array on two parameters, for example, name and then by description. Sorting the array first by name and then by description won't work because then the array won't be sorted by name.
The solution should be something like this:
var sortedArray = sorted(items, { (o1: MyObject, o2: MyObject) -> Bool in
return o1.name < o2.name and o1.description < o2.description
})
Thanks
Your syntax looks correct. Just change the closure to
return o1.name == o2.name ? (o1.description < o2.description) : (o1.name < o2.name)
If you want more than two sort criteria I recommend using the old fashioned sort descriptors.
let sortedArray = (unsortedArray as NSArray).sortedArrayUsingDescriptors([
NSSortDescriptor(key: "name", ascending: true),
NSSortDescriptor(key: "description", ascending: true),
....
]) as! [Object]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With