我实现或过滤,
如果用户键入“nba la”,
数组“appdel.datafetcher”中有任何项吗?.apptitles“将使用或模式进行搜索。
但是,我不知道如何实现和模式。
这是任何选定项目必须同时在其文本中包含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:)建立结果和谓词,如下所示:

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)

仅供参考,使用以下命令可以更轻松地拆分文本:
let searchTerms = searchController.searchBar.text!.componentsSeparatedByString(" ")

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

10-12 00:16
查看更多