我的应用程序视图中有UIsearchbar。 UIsearchbar允许用户按用户名搜索。我们需要添加的另一项功能是允许按用户名和电子邮件地址进行搜索。我想问一下如何修改搜索功能以搜索用户名和电子邮件?
public func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredUsers = users.filter({( user : User) -> Bool in
print(searchText)
return user.username.lowercased().contains(searchText.lowercased())
})
tableViewUsers.reloadData()
}
答案 0 :(得分:3)
OR
都是两个谓词。比lowercased().contains()
更有效的API是range(of:options: .caseInsensitive)
。
public func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredUsers = users.filter {
$0.username.range(of: searchText, options: .caseInsensitive) != nil ||
$0.email.range(of: searchText, options: .caseInsensitive) != nil
}
tableViewUsers.reloadData()
}
其他可以组合的选项是diacriticInsensitive
和anchored
答案 1 :(得分:2)
您可以尝试
filteredUsers = users.filter { $0.username.lowercased().contains(toSearch)
|| $0.email.lowercased().contains(toSearch) }