如何使用 Share Class in swift 4 在 searchController 中过滤数据
How to filter data in searchController using Share Class in swift 4
我正在使用 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 { [=12=].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: [=10=].strHotelName) }
print(type2Array)
tableView.reloadData()
}
}
你可以试试这个:
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredArray.removeAll()
filteredArray = arrHotelData.filter({[=10=].lowercased().contains(searchText.lowercased())})
self.tableView.reloadData()
}
这里应该使用filteredData
来显示和替换代码
let ShareObj : ShareObj = AddHotelShareObj()
到
let shareObj : ShareObj = AddHotelShareObj()
因为相同的引用和类型可能会导致问题。
我正在使用 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 { [=12=].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: [=10=].strHotelName) }
print(type2Array)
tableView.reloadData()
}
}
你可以试试这个:
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredArray.removeAll()
filteredArray = arrHotelData.filter({[=10=].lowercased().contains(searchText.lowercased())})
self.tableView.reloadData()
}
这里应该使用filteredData
来显示和替换代码
let ShareObj : ShareObj = AddHotelShareObj()
到
let shareObj : ShareObj = AddHotelShareObj()
因为相同的引用和类型可能会导致问题。