проблема с получением результата в строке поиска в swift

#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}