UISearchBar从Json(SWIFT 3)获取数据

时间:2017-08-09 02:24:59

标签: json swift swift3 uisearchbar

我有一个类来保存来自我的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,所以我试图从其他代码中学习

1 个答案:

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

希望这可以帮助你