我有一个字符数组,当我搜索并输入“Co”时,例如,我得到两个匹配项(我不希望这样)。我只想搜索以特定字符开头的内容。
我分享了Swift中的字符串数组和textDidChange方法
举例来说:
listEmployed = ["Conejo","Tetera","Aviteon","Sacoja"]
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
isSearching = true
arrayFilterEmployed = listEmployed
if searchText.isEmpty == false {
arrayFilterEmployed = listEmployed?.filter({$0.text.lowercased().range(of: searchText.lowercased(), options: .caseInsensitive) != nil})
}
if arrayFilterEmployed?.count == 0 {
searchBar.showsCancelButton = false
fountLabel?.isHidden = false
}
else {
categoryTableView?.reloadData()
fountLabel?.isHidden = true
}
categoryTableView?.reloadData()
}
字符串
2条答案
按热度按时间92dk7w1h1#
您只需要添加
.anchored
选项。由于您使用的是.caseInsensitive
,因此不需要调用lowercased()
:字符串
.anchored
意味着只有在字符串的开头才能通过检查。如果选项还包括.backwards
,那么.anchored
将意味着匹配必须在字符串的末尾。vc9ivgsu2#
您可以使用hasPrefix过滤数据。它将根据您在搜索栏中输入的文本筛选出数据。
替换以下行:
字符串
使用(区分大小写搜索)
型
并替换为以下内容(不区分大小写的搜索)
型