Sort array on two parameters in swift

arrays, parameters, sorting, swift

Solution

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]

Problem

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

Original source