用于过滤数组的 NSPredicate

NSPredicate for filtering array

我卡在数组排序上了。

我想按名称对数组进行排序:

var mesta: NSArray = ["ceska lipa", "budejovice", "liptakov"]
var zkouska = "lip"

let predicate = NSPredicate(format: "SELF contains %@", zkouska)
print(mesta.filter{ predicate.evaluate(with: [=10=])})

它打印 [ceska lipa, liptakov],但我想先 liptakov,因为字母 lip 早于 捷克利帕

我想要结果 [liptakov, ceska lipa]

我试过了:

let predicate = NSPredicate(format: "SELF BEGINSWITH %@", zkouska)

但它只打印 liptakov

var mesta = ["ceska lipa", "budejovice", "liptakov"]
var zkouska = "lip"

let filtered = mesta.filter { [=10=].contains(zkouska) }
let sorted = filtered.sorted {
    return [=10=].range(of: zkouska)!.lowerBound < .range(of: zkouska)!.lowerBound
}

print(sorted) // ["liptakov", "ceska lipa"]