Как отсортировать два массива и добавить его в третий, используя текстовое поле в Swift - PullRequest
0 голосов
/ 05 марта 2020

Я новичок в Swift и столкнулся с проблемой поиска по одному. Я попробовал этот код

let appln_id = "800016"

let result = (dict["listAarry"] as? [[String:Any]])?.filter({ ($0["appln_id"] as? String) == appln_id })

, но я хочу найти его в текстовом поле

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool{


    if textField == txtSearch{
        let certificationId = txtSearch.text //"800016"

        let result = (searchdict["listAarry"] as? [[String:Any]])?.filter({ ($0["appln_id"] as? String) == certificationId })
    }

    return true
}

enter image description here

Ответы [ 3 ]

1 голос
/ 05 марта 2020

Я так глуп, что просто должен использовать вместо ==

txtSearch.addTarget(self, action: #selector(AdmissionReportVC.textFieldDidChange(_:)), for: UIControl.Event.editingChanged)

 @objc func textFieldDidChange(_ textField: UITextField) { 
     var certificationId = String()
     certificationId =  txtSearch.text ?? ""
     print(certificationId)
     let result = (searchdict["listAarry"] as? [[String:Any]])?.filter({ 
     (($0["appln_id"] as? String)?.contains(certificationId) ?? false)})
     print("Result = ",result as Any
     SearchAny = result!
     tblView.reloadData()
 }
0 голосов
/ 05 марта 2020
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    let previousText:NSString = textField.text! as NSString
    let updatedText = previousText.replacingCharacters(in: range, with: string)
    let result = dict.filter { (dict) -> Bool in
        if let app_id = dict["appln_id"] as? String {
            return app_id.contains(updatedText)
        }
        return false
    }

    return true
}

результат будет оцениваться на основе искомого термина.

0 голосов
/ 05 марта 2020

Итак, вы в настоящее время вызываете функцию делегата shouldChangeCharactersIn для textField. Однако, что вы хотите сделать, это вызвать:

@objc func textFieldValueChanged(_ textField: UITextField)

Наряду с:

searchTextField.addTarget(self, action: #selector(textFieldValueChanged), for: .editingChanged)

в методе valueChanged вы должны сделать свой фильтр, но с небольшим редактированием и затем поместите это в ваш datasource для tableView и запустите ваш tableView.reloadData()

let result = (va["listAarry"] as? [[String:Any]])?.filter({ (($0["appln_id"] as? String)?.contains("textInput") ?? false)})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...