我正在寻找一种基于布尔值对Swift数组进行排序的方法。
我已经使用强制转换为NSArray来工作了:
var boolSort = NSSortDescriptor(key: "selected", ascending: false) var array = NSArray(array: results) return array.sortedArrayUsingDescriptors([boolSort]) as! [VDLProfile]
但是我在寻找Swift变体,有什么想法吗?
更新 感谢Arkku,我设法使用以下代码修复了此问题:
return results.sorted({ (leftProfile, rightProfile) -> Bool in return leftProfile.selected == true && rightProfile.selected != true })
斯威夫特的阵列可以在适当的位置进行排序sort或用新的阵列sorted。这两个函数的单个参数都是一个闭合,该闭合带有两个元素,true如果第一个元素在第二个元素之前被排序,则返回。使用闭包的参数的最短方法是将其称为$0和$1。
sort
sorted
true
$0
$1
例如(首先对真正的布尔值排序):
// In-place: array.sort { $0.selected && !$1.selected } // To a new array: array.sorted { $0.selected && !$1.selected }
(编辑:已为Swift 3和Swift 4更新,以前sort是sortInPlaceand sorted是sort。)
sortInPlace