关于数据库中的SearchBar过滤器

时间:2018-08-09 14:37:14

标签: swift

我已经在Data中构建了数据,如下所示: enter image description here

这是问题所在:<- “二进制运算符'=='不能应用于'ModleData'和'String'类型的操作数”

谢谢!

enter image description here

var isSearching=false
var tableData=[ModleData]()
var filteredData=[ModleData]()


func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    if searchBar.text == nil || searchBar.text == "" {
        isSearching = false
        view.endEditing(true)
        tableView.reloadData()
    }else{
        isSearching = true
        filteredData=tableData.filter({$0 == searchBar.text!})<--
        tableView.reloadData()
    }
}

3 个答案:

答案 0 :(得分:2)

更新您的以下代码行:

filteredData=tableData.filter({$0 == searchBar.text!})

有这行:

filteredData=tableData.filter({$0.name == searchBar.text!})

我希望这能解决您的问题。

答案 1 :(得分:1)

您正在比较不同的Type对象'ModleData'和'String'“ ,比较运算符(==)可以应用于相同的类型对象。

更改此行

filteredData=tableData.filter({$0 == searchBar.text!})<--

为此,

filteredData=tableData.filter({$0.name == searchBar.text!})

希望有帮助

答案 2 :(得分:1)

您需要过滤模型的属性之一。

filteredData = tableData.filter { $0.name == searchBar.text! }

注意:更好的是!text.isEmpty

if let searchText = searchBar.text, !searchText.isEmpty {
    filteredData = tableData.filter { $0.name == searchText }
} else {

}