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