如何在swift中按布尔字段对数组进行排序?

时间:2015-03-04 06:15:05

标签: swift

我有一个像这样定义的类:

class someClass {
   var isCompleted = false
}

如何对someClass的列表进行排序?如果想将已完成的项目移动到列表顶部。

3 个答案:

答案 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)

如果必须在第二个参数之前订购第一个参数,sortsorted

参数结束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