#swift #uisearchbar
#swift #панель поиска uisearchbar
Вопрос:
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredData = patientArray.filter({$0.lowercased().prefix(searchText.count) == searchText.lowercased()})
searching = true
tableView.reloadData()
}
На приведенных выше 2 изображениях, если я записываю точно такую же строку, я получаю результат. Но если я ищу какие-либо числа, такие как «20». тогда результат будет пустым.
Как исправить проблему, заключающуюся в том, что если я буду искать любой содержащий текст (это могут быть цифры или текст), я получу результат.
Ответ №1:
Вы выполняете поиск с начала строки ( prefix
). Если вы хотите выполнить поиск, содержит ли строка подстроку, которую вы должны использовать contains
.
Но есть более эффективный API, range(of:options:)
который также позволяет избежать повторного вызова lowercased()
filteredData = patientArray.filter{$0.range(of: searchText, options: .caseInsensitive) != nil}