Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sort array on two parameters in swift

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

like image 784
diogo.appDev Avatar asked Nov 28 '14 17:11

diogo.appDev


1 Answers

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]
like image 189
Mundi Avatar answered Sep 19 '22 08:09

Mundi