基于布尔值的Swift排序对象数组

Ant*_*ine 42 arrays sorting swift

我正在寻找一种基于布尔值对Swift数组进行排序的方法.

我已经使用强制转换为NSArray工作了:

var boolSort = NSSortDescriptor(key: "selected", ascending: false)
var array = NSArray(array: results)
return array.sortedArrayUsingDescriptors([boolSort]) as! [VDLProfile]
Run Code Online (Sandbox Code Playgroud)

但我正在寻找Swift变体,任何想法?

更新 感谢Arkku,我已设法使用以下代码解决此问题:

return results.sorted({ (leftProfile, rightProfile) -> Bool in
    return leftProfile.selected == true && rightProfile.selected != true
})
Run Code Online (Sandbox Code Playgroud)

Ark*_*kku 89

Swift的数组可以使用sort或与新数组一起排序sorted.任一函数的单个参数是一个闭包,取两个元素并返回trueiff第一个在第二个之前排序.使用闭包参数的最短方法是将它们称为$0$1.

例如(首先对真正的布尔值进行排序):

// In-place:
array.sort { $0.selected && !$1.selected }

// To a new array:
array.sorted { $0.selected && !$1.selected }
Run Code Online (Sandbox Code Playgroud)

(编辑:更新了Swift 3和4,之前sort曾经sortInPlacesorted过去了sort.)