在 swift 的搜索栏中获取结果时出现问题
issue getting result in search bar in swift
我正在研究搜索栏。
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredData = patientArray.filter({[=11=].lowercased().prefix(searchText.count) == searchText.lowercased()})
searching = true
tableView.reloadData()
}
在上面的 2 张图片中,如果我写的是完全相同的字符串,那么我得到的是结果。但如果我正在搜索任何数字,如“20”。那么结果是空的。
如何解决搜索任何包含文本(可能是数字或文本)都会得到结果的问题
您正在从字符串的开头搜索 (prefix
)。如果要搜索字符串是否包含子字符串,则必须使用 contains
.
但是有一个更高效的API,range(of:options:)
也避免了lowercased()
的重复调用
filteredData = patientArray.filter{[=10=].range(of: searchText, options: .caseInsensitive) != nil}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredData = patientArray.filter({[=11=].lowercased().prefix(searchText.count) == searchText.lowercased()})
searching = true
tableView.reloadData()
}
在上面的 2 张图片中,如果我写的是完全相同的字符串,那么我得到的是结果。但如果我正在搜索任何数字,如“20”。那么结果是空的。 如何解决搜索任何包含文本(可能是数字或文本)都会得到结果的问题
您正在从字符串的开头搜索 (prefix
)。如果要搜索字符串是否包含子字符串,则必须使用 contains
.
但是有一个更高效的API,range(of:options:)
也避免了lowercased()
filteredData = patientArray.filter{[=10=].range(of: searchText, options: .caseInsensitive) != nil}