您好,我使用array
模型数据,将数据加载到tableview
中。
但是我想根据textField
中的用户输入来搜索数据。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let model = array[indexPath.row]
if let rate = model.price
{
cell.pricelbl.text = "$" + rate
}
cell.namelbl.text = model.prodName ?? ""
}
//Textfield delegate methods.
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField == searchtextfield
{
var foundItems = [BaseApparel]()
foundItems = self.array.filter { $0.prodName == searchtextfield.text! }
self.array = foundItems
self.searchtableview.reloadData()
}
return true
}
答案 0 :(得分:0)
使用谓词: 在viewDidLoad()中,添加以下行
searchtextfield.addTarget(self, action: #selector(valueDidModify(_:)), for: .editingChanged)
然后使用此功能:
@objc func valueDidModify(_ sender:UITextField){
let predicate = NSPredicate(format:"self.prodName CONTAINS [cd] %@",sender.text)
let filteredArray = self.array.filter{predicate. evaluateWithObject($0)}
}
将numberOfRows返回为filteredArray.count