在swift中对两个参数排序数组

时间:2014-11-28 17:40:01

标签: arrays sorting swift parameters

我想对两个参数排序数组,例如name,然后是description。 首先按名称排序数组然后按描述对数组进行排序不会起作用,因为数组不会按名称排序。

解决方案应该是这样的:

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

由于

1 个答案:

答案 0 :(得分:28)

您的语法看起来正确。只需将闭包更改为

即可
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]