gpt4 book ai didi

swift - 我怎样才能实现和搜索过滤器

转载 作者:可可西里 更新时间:2023-11-01 02:15:33 25 4
gpt4 key购买 nike

我实现了 OR 过滤器,

如果用户输入“NBA LA”,此数组“appDel.dataFetcher?.appTitles”中的任何项目都将使用 OR 模式进行搜索。

但是,我不知道如何实现AND模式。

即任何选中的项目必须同时在其文本中包含 NBA 和 LA

或搜索

        let searchTerms = searchController.searchBar.text!.characters.split{$0 == " "}.map(String.init)
for term: String in searchTerms {
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", term)
let array = ((appDel.dataFetcher?.appTitles)! as NSArray).filteredArrayUsingPredicate(searchPredicate)
searchResult += array as! [String]
}
let mySet = Set<String>(searchResult)

最佳答案

您可以使用 NSCompoundPredicate(andPredicateWithSubpredicates:) 构建生成的 AND 谓词如下所示:

let predicates = searchTerms.map {
return NSPredicate(format: "SELF CONTAINS[c] %@", $0)
}
let searchPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: predicates)
let searchResult = ((appDel.dataFetcher?.appTitles)! as NSArray).filteredArrayUsingPredicate(searchPredicate)
let mySet = Set<String>(searchResult)

仅供引用,您可以使用 componentsSeparatedByString 更轻松地拆分文本:

let searchTerms = searchController.searchBar.text!.componentsSeparatedByString(" ")

关于swift - 我怎样才能实现和搜索过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38938195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com