Сортировка массива по двум параметрам в быстром

Я хочу отсортировать массив по двум параметрам, например, по имени, а затем по описанию. Сортировка массива сначала по имени, а затем по описанию не будет работать, потому что массив не будет сортироваться по имени.

Решение должно быть примерно таким:

var sortedArray = sorted(items, { (o1: MyObject, o2: MyObject) -> Bool in
            return o1.name < o2.name and o1.description < o2.description
        })

Спасибо

Ответы

Ответ 1

Ваш синтаксис выглядит корректно. Просто измените замыкание на

return o1.name == o2.name ? (o1.description < o2.description) : (o1.name < o2.name)

Если вы хотите более двух критериев сортировки, я рекомендую использовать старые стильные дескрипторы сортировки.

let sortedArray = (unsortedArray as NSArray).sortedArrayUsingDescriptors([
  NSSortDescriptor(key: "name", ascending: true),
  NSSortDescriptor(key: "description", ascending: true),
  .... 
]) as! [Object]