如何根据文本字段中的用户输入过滤字典数据数组

时间:2019-06-19 11:29:08

标签: ios arrays swift dictionary tableview

您好,我使用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
        }

1 个答案:

答案 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