这是问题所在:<- “二进制运算符'=='不能应用于'ModleData'和'String'类型的操作数”
谢谢!
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()
}
}
答案 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 {
}