我有一个类来保存来自我的api的数据
var searchActive : Bool = false
var filtered:[Shops] = []
var shops = [Shops]()
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filtered = searchText.isEmpty ? shops : shops.filter { (item: String) -> Bool in
// If dataItem matches the searchText, return true to include it
return item.range(of: searchText, options: .caseInsensitive, range: nil, locale: nil) != nil
}
tableView.reloadData()
}
如果用户编辑搜索栏,我会尝试过滤商店名称并展开商店名称。所以我尝试了这段代码:
tf.reduce_logsumexp
但是我收到一条错误消息,说该商品没有会员范围! 对不起,这是我第一次在项目中实施UISearchBar,所以我试图从其他代码中学习
答案 0 :(得分:0)
查看此链接How to implement UISearchController in UITableView - SWIFT并在此功能func updateSearchResults(for searchController: UISearchController)
中添加您的代码
试试这个:
// MARK: UISearchResultsUpdating delegate function
// example for search user in userlist and change it as your requirements.
func updateSearchResults(for searchController: UISearchController) {
guard let searchString = searchController.searchBar.text else {
return
}
// Filter the data array and get only those userlist that match the search text.
filteredArray = self.userList.filter{
let firstName = $0.first_name.lowercased()
let middleName = $0.middle_name.lowercased()
let lastName = $0.last_name.lowercased()
let contactNumber = $0.mobile.lowercased()
let fullName = $0.fullname.lowercased()
return firstName.range(of: searchString.lowercased()) != nil
|| middleName.range(of: searchString.lowercased()) != nil
|| lastName.range(of: searchString.lowercased()) != nil
|| contactNumber.range(of: searchString.lowercased()) != nil
|| fullName.range(of: searchString.lowercased()) != nil
}
// Reload the tableview.
tableView.reloadData()
}
希望这可以帮助你