我正在尝试向我的应用程序添加一个搜索栏,我可以根据 1 个值成功过滤一组字典,但我希望能够添加 2 个单词。例如:
var posts = [[String: Any]]()
var filteredData = [[String: Any]]()
posts = [[shape: square, color: red][shape: circle, color: blue][shape: square, color: blue].
如果我搜索正方形,那么我的结果只显示第一个和第三个数组,如果我写蓝色,它会显示第二个和第三个数组,但如果我写红色方形,它不会显示任何内容。
如何搜索和过滤多个值?因此,如果我写正方形,则有 2 个结果,然后添加红色会将其减少为 1 个结果。
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredData = posts.filter({ (text) -> Bool in
let shape: NSString = text["shape"] as! NSString
let color: NSString = text["color"] as! NSString
let rangeShape = shape.contains(searchText)
let rangeColor = features.contains(searchText)
return rangeShape || rangeColor
})
}
最佳答案
通过使用空格分割搜索文本并搜索所有帖子中的所有元素进行过滤。
let splitText = text.split(separator: " ")
let filteredData = posts.filter {
if let s = $0["shape"] as? String, splitText.index(of: Substring(s)) != nil {
return true
}
if let s = $0["color"] as? String, splitText.index(of: Substring(s)) != nil {
return true
}
return false
}
正如所有其他提到的,您应该在 swift 中使用 String
而不是 NSString
。
关于ios - UISearchBar 对不同的值使用多个单词,iOS,Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47757617/