我想按照两个条件对数组进行排序,例如先按名称再按描述进行排序。但是先按名称再按描述排序是行不通的,因为这样数组就不会按名称排序。
解决方法应该像这样:
var sortedArray = sorted(items, { (o1: MyObject, o2: MyObject) -> Bool in
return o1.name < o2.name and o1.description < o2.description
})
谢谢
我想按照两个条件对数组进行排序,例如先按名称再按描述进行排序。但是先按名称再按描述排序是行不通的,因为这样数组就不会按名称排序。
解决方法应该像这样:
var sortedArray = sorted(items, { (o1: MyObject, o2: MyObject) -> Bool in
return o1.name < o2.name and o1.description < o2.description
})
谢谢
您的语法看起来是正确的。只需将闭合标签改为
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]
描述
(第2部分)排序,仅按名称
(第3部分)排序,不重复。 - Mundi