如何将 searchController 转换为实时搜索
How to convert searchController to a live search
我有一个 searchController,它可以很好地进行搜索并填充正确的值。但是这些代码return的值如果是searchingText
和values
。我需要搜索栏来使搜索生效。例如,当我输入 40027 时,此函数必须 return 每个以 40027 开头的值(例如 40027-60)
这是我的搜索功能:
func updateSearchResults(for searchController: UISearchController) {
if searchController.isActive {
filteredData.removeAll(keepingCapacity: false)
let textToSearch = searchController.searchBar.text!
filteredData = feedItems.filter({[=10=].DesenNo?.caseInsensitiveCompare(textToSearch) == .orderedSame})
listTableView.reloadData()
}
else {
filteredData.removeAll(keepingCapacity: false)
listTableView.reloadData()
}
}
与其查找确切的字符串,不如对字符串使用 contains
方法进行比较。
完整的苹果文档可以在这里找到:
https://developer.apple.com/documentation/foundation/nsstring/1414563-containsstring
已编辑:
您的比较可能看起来像这样
filteredData = feedItems.filter({[=10=].DesenNo?. lowercaseString.contains(textToSearch.lowercaseString)})
我有一个 searchController,它可以很好地进行搜索并填充正确的值。但是这些代码return的值如果是searchingText
和values
。我需要搜索栏来使搜索生效。例如,当我输入 40027 时,此函数必须 return 每个以 40027 开头的值(例如 40027-60)
这是我的搜索功能:
func updateSearchResults(for searchController: UISearchController) {
if searchController.isActive {
filteredData.removeAll(keepingCapacity: false)
let textToSearch = searchController.searchBar.text!
filteredData = feedItems.filter({[=10=].DesenNo?.caseInsensitiveCompare(textToSearch) == .orderedSame})
listTableView.reloadData()
}
else {
filteredData.removeAll(keepingCapacity: false)
listTableView.reloadData()
}
}
与其查找确切的字符串,不如对字符串使用 contains
方法进行比较。
完整的苹果文档可以在这里找到: https://developer.apple.com/documentation/foundation/nsstring/1414563-containsstring
已编辑: 您的比较可能看起来像这样
filteredData = feedItems.filter({[=10=].DesenNo?. lowercaseString.contains(textToSearch.lowercaseString)})