一般的swift和编程新手。我有这个searchBar函数,它搜索输入的内容和tableView内容。我注意到它不适用于特殊字符。例如:我有一个tableView,其中Hon是文本的名称。当我在搜索栏上键入Hon时,Hon会出现在tableView的列表中。但是,当我键入Hon(使用撇号)时,tableView会列出所有内容并且它没有正确搜索它。我希望只有Hon才能出现。我如何修复下面的代码?
public func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredData = all.filter({ (text) -> Bool in
let tmp: NSString = text as NSString
let range = tmp.range(of: searchText, options: .caseInsensitive)
return range.location != NSNotFound
})
if filteredData.count == 0 {
searchActive = false
} else {
searchActive = true
}
self.tableView.reloadData()
}
答案 0 :(得分:0)
试试这个:
let text = "Hon's Shop"
let searchText = "Hon's"//works for "Hon" also
let found = text.lowercased().contains(searchText.lowercased())//returns true
因此,您可以将过滤器修改为:
filteredData = all.filter({ (text) -> Bool in
return text.lowercased().contains(searchText.lowercased())
})
<强>更新强> 正如Leo所提到的,你只能将return语句更改为:
return range != nil
但是使用我的建议你可以缩短代码!