首页 > 解决方案 > 如何在 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)

但是数组正在返回[]。你能帮我为什么它不起作用

标签: iosswiftuisearchcontroller

解决方案


试试这个:

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()
        }
    }

推荐阅读