代码之家  ›  专栏  ›  技术社区  ›  David Kadlcek

nspredicate用于筛选数组

  •  0
  • David Kadlcek  · 技术社区  · 6 年前

    我被困在数组的排序上。

    我想按名称对数组排序:

    var mesta: NSArray = ["ceska lipa", "budejovice", "liptakov"]
    var zkouska = "lip"
    
    let predicate = NSPredicate(format: "SELF contains %@", zkouska)
    print(mesta.filter{ predicate.evaluate(with: $0)})
    

    资讯科技印刷 [塞斯卡·利帕,利普塔科夫] ,但我想先去利普塔科夫,因为 嘴唇 早于 塞斯卡利帕

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

    我试过:

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

    但只有指纹 利帕塔科夫

    1 回复  |  直到 6 年前
        1
  •  2
  •   André Slotta    6 年前
    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"]