我有一个像这样定义的类:
class someClass {
var isCompleted = false
}
如何对someClass
的列表进行排序?如果想将已完成的项目移动到列表顶部。
答案 0 :(得分:7)
您可以通过转换根据布尔属性进行排序
Int
的值:
let arrayOfClasses = ... // array of classes
let sortedArrayOfClasses = sorted(arrayOfClasses) {
Int($0.isCompleted) > Int($1.isCompleted)
}
或“原位”排序:
var arrayOfClasses = ... // array of classes
sort(&arrayOfClasses) {
Int($0.isCompleted) > Int($1.isCompleted)
}
答案 1 :(得分:2)
sort
或sorted
的参数结束true
,否则false
。
所以你可以:
let array = [ ... ]
let sortedArray = array.sorted { a, b in
a.isCompleted && !b.isCompleted
}
答案 2 :(得分:0)
var yourArrayOfBooleans:[SomeClass] = ...
var sortedArrayOfBooleans:[SomeClass] = []
var tmpArray:[SomeClass] = []
for ar in yourArrayOfBooleans
{
if ar.isCompleted
{
sortedArrayOfBooleans.append(ar)
}
else
{
tmpArray.append(ar)
}
}
sortedArrayOfBooleans += tmpArray