Swift 3.0搜索栏按字母过滤(非单词)
问题描述:
我希望我的搜索栏能够通过非大小写字母来过滤tableView。目前,我已设置它,以便按区分大小写的词进行过滤,我不确定如何通过搜索栏中使用的字母填充tableView。Swift 3.0搜索栏按字母过滤(非单词)
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if newMessageSearchBar.text == nil || newMessageSearchBar.text == "" {
isSearching = false
view.endEditing(true)
messagesTableView.reloadData()
} else {
isSearching = true
nameList = sortedUserNames.filter({$0 == searchBar.text})
messagesTableView.reloadData()
}
}
我的dataSource是sortedUserNames,我将它设置为nameList。我不确定tableView是否仅在单词完成或者过滤器功能不起作用时刷新。
答
而是平等的比较,这是只返回上完全平等true,则使用contains
相反,小写使其不区分敏感
nameList = sortedUserNames.filter({$0.lowercased().contains(searchBar.text.lowercased())})
答
这取决于你的,你要如何做搜索的选择,如果你想让表格包含提供的确切搜索字符串,那么“==”将为你提供最好的服务,但是如果你希望名称可以包含搜索字符串的任何字符/子字符串,那么“包含”将是你的选择。
nameList = sortedUserNames.filter({$0.lowercaseString == searchBar.text.lowercaseString})
答
我试过这个,它实际上适用于我。当您尝试稍后搜索资本并以小写字母显示特定字母将出现的字词时。
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchWordsBar.text == nil || searchWordsBar.text == "" {
isSearching = false
view.endEditing(true)
originalWordsTableView.reloadData()
} else {
isSearching = true
filteredWords = originalWords.filter { originalWords in return originalWords.lowercased().contains(searchText.lowercased())
}
originalWordsTableView.reloadData()
}
}