NSPredicate用于过滤数组

时间:2018-06-19 18:08:35

标签: swift nspredicate

我被困在数组排序中。

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

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

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

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

我想要结果[利普塔科夫,切斯卡利帕]

我尝试过:

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

,但仅打印 liptakov

1 个答案:

答案 0 :(得分:2)

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

let filtered = mesta.filter { $0.contains(zkouska) }
let sorted = filtered.sorted {
    return $0.range(of: zkouska)!.lowerBound < $1.range(of: zkouska)!.lowerBound
}

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