ios - 如何在 swift 4 中使用 Share Class 过滤 searchController 中的数据
问题描述
我UISearchController
用来过滤数据。这是我的代码:
var filteredData: [ShareObj] = [ShareObj]()
var arrHotelData : [ShareObj] = [ShareObj]()
extension AddAddressVC : UISearchResultsUpdating {
func updateSearchResults(for searchController: UISearchController) {
if let searchText = searchController.searchBar.text {
filteredData.removeAll()
let type2Array = arrHotelData.filter { $0.strHotelName == searchText.lowercased()}
print(type2Array)
tableView.reloadData()
}
}
}
这是我保存数据的代码
for i in 0..<arrData.count
{
let ShareObj : ShareObj = AddHotelShareObj()
let dict = arrData[i]
if (dict[""]) != nil {
ShareObj.strHotelName = dict[""] as! String
}
if (dict[""]) != nil {
ShareObj.strAddress = dict[""] as! String
}
if (dict[""]) != nil {
ShareObj.strZipCode = dict[""] as! String
}
self.arrHotelData.append(ShareObj)
但是数组正在返回[]。你能帮我为什么它不起作用
解决方案
试试这个:
func updateSearchResults(for searchController: UISearchController) {
if let searchText = searchController.searchBar.text {
filteredData.removeAll()
let filterPredicate = NSPredicate(format: "self contains[c] %@", argumentArray: [searchText])
let type2Array = self.arrHotelData.filter { filterPredicate.evaluate(with: $0.strHotelName) }
print(type2Array)
tableView.reloadData()
}
}