我使用jsonserialization方法从url获取数据,并将每个记录存储在类的对象中,并在表vc中显示每条记录。
现在我想使用搜索栏实现搜索并观看许多教程,这些教程在字符串类型数组和另一个字符串类型数组(数组中的硬编码值)之间进行了比较。 但根据我的需要,我的数据存储在类obj中而不是硬编码数据,来自该对象的数据显示在cellforrow上。 cellforrow包含。
if isSearching
{
cell.textLabel?.text = searchArray[indexPath.row] //.compName
cell.detailTextLabel?.text = searchArray[indexPath.row]
}
else{
cell.textLabel?.text = tempArray[indexPath.row].compName
cell.detailTextLabel?.text = tempArray[indexPath.row].complocation
}
return cell
那么如何实现搜索栏,得到以下错误。 请帮忙! 这里我的班级名称是 - >可比。 和searchArray是字符串数组 tempArray是包含类obj
的数组答案 0 :(得分:1)
找到它。在这里 以下是其他条件的变化
searchArr = tempArray.filter { $0.<classAttribute>.contains(searchText) }
searchArray = searchArr as! [comp]
print("search match")
listTableView.reloadData()
这里searchArr和searchArray和tempArray是类类型的数组,&amp; classAttribute是你要在tableview中搜索的那个类的属性,我的类名是&#34; comp&#34;
答案 1 :(得分:0)
然后您只需要修改您使用的搜索过滤器:
searchArray = tempArray.filter({$0.compName == searchBarClicked.text!})
编译器告诉您,您无法将$0
类型comp
与searchBarClicked.text
String
进行比较,因此$0.compName
将为String
因此可以使用==
答案 2 :(得分:0)
使用此:
searchArray = searchArray.filter{(($0["name"]?.localizedCaseInsensitiveContains(textField.text!)))!}