ios - UISearchBar 对不同的值使用多个单词,iOS,Swift

标签 ios swift search filter

我正在尝试向我的应用程序添加一个搜索栏,我可以根据 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/

相关文章:

ios - ML 套件人脸识别不适用于 IOS

iphone - UITextchecker用哪种语言进行拼写检查?

objective-c - 如何以编程方式将 iPad 应用程序锁定为一个应用程序?

swift - 添加图层后,播放按钮不会出现在 AVPlayer 中 - iOS 16

ios - addTarget 不触发任何事件

ios - 以编程方式从我的 iOS 应用程序中的外部摄像头电路传输图片

ios - 我已经为 UITableView 的单元格设置了值,但为什么它没有显示?

ruby-on-rails - Rails 国家精选 gem

java - 在Java中,如何使用循环实例化新对象,将它们存储在数组中,然后使用它们?

python - 搜索多维数组