基于UItableView中的多个参数进行搜索

时间:2017-09-29 12:54:05

标签: ios uitableview search model-view-controller swift3

我需要在UITableView中进行搜索,其中包含多个数据(姓名,联系电话,电子邮件,状态等)。用户可以通过姓名或电话号码进行搜索以搜索记录。数据通过模型处理,意味着数组中包含对象。那么,如何以这种方式进行搜索我不知道。

以这种方式在UITableViewCell中显示数据:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell: VisitorsCell = tableView.dequeueReusableCell(withIdentifier: "VisitorsCell", for: indexPath) as! VisitorsCell

    let dss:VisitorsDs = VisitorsArray[indexPath.row] as! VisitorsDs

    dss.ageFromDate = ds.age
    cell.lblAge.text = dss.ageFromDate
    cell.lblName.text = dss.namePlain
    cell.lblMobile.text = dss.mobilePlain
    cell.lblPurpose.text = dss.purpose
    cell.lblParentsName.text = dss.parentsName
    cell.lblTime.text = dss.time
    cell.lblDate.text = dss.date
    cell.lblClinic.text = dss.clinic

    return cell

}

更新

let dss:VisitorsDs = VisitorsArray as! VisitorsDs

    let filteredArray = self.VisitorsArray.filter(using: {($0.dss.namePlain.contains(txtSearch.text)) || ($0.dss.mobilePlain.contains(txtSearch.text))})

4 个答案:

答案 0 :(得分:0)

我认为您的namePlainmobilePlain是字符串。试试这个 -

let filteredArray = self.VisitorsArray.filter({($0.namePlain.contains(yourSearchTextField.text)) || ($0.mobilePlain.contains(yourSearchTextField.text))})

答案 1 :(得分:0)

在调用tableview.reloadData()

之前,需要对数组中的对象进行过滤。

转发到表格视图后,您无法再过滤任何记录。

答案 2 :(得分:0)

考虑使用专为此目的而设计的UISearchControllerThis tutorial似乎正是您正在寻找的 - 如何将搜索集成到tableview中。

答案 3 :(得分:0)

最后得到了自己,但感谢@Aditya Srivastava和@Larme让我走上正轨。

arrSearchResults = recentVisitorsArray.filter{ ($0.namePlain.contains(txtSearch.text!)) || ($0.mobilePlain.contains(txtSearch.text!)) }
我犯的错误是:

 //var recentVisitorsArray:NSMutableArray = NSMutableArray()

正确的方法是:

var recentVisitorsArray = [RecentVisitorsDs]()
var arrSearchResults = [RecentVisitorsDs]()