我需要在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))})
答案 0 :(得分:0)
我认为您的namePlain
和mobilePlain
是字符串。试试这个 -
let filteredArray = self.VisitorsArray.filter({($0.namePlain.contains(yourSearchTextField.text)) || ($0.mobilePlain.contains(yourSearchTextField.text))})
答案 1 :(得分:0)
在调用tableview.reloadData()
之前,需要对数组中的对象进行过滤。转发到表格视图后,您无法再过滤任何记录。
答案 2 :(得分:0)
考虑使用专为此目的而设计的UISearchController。 This 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]()