I am using UISearchController
to filter data. Here is my code:
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()
}
}
}
Here is my code to save data
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)
But array is returning []. Can you help me why it's not working
Try this:
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()
}
}