我在 firestore 中有 cities: [String]
的结构
struct CityList {
var country: String
var cities: [String]
}
在 firestore 中的结构看起来像在
1
country: Russia
cities: ["Moscow", "Saint-Petersburg"]
2
country: USA
cities: ["New York", "Los Angeles"]
当我使用 searchController 时,我需要使用字符串过滤数组 cities: [String]
。现在我有了 func filterContentForSearchText
private func filterContentForSearchText(_ searchText: String) {
filteredCityList = cityList.filter({ (cityList: CityList) -> Bool in
return cityList.cities[0].lowercased().contains(searchText.lowercased())
})
tableView.reloadData()
}
我知道我的错误是 -> cities[0]
,但我不知道如何解决...
当我在 searchController 中写入文本时,searchController 仅搜索第一个城市,即莫斯科 或纽约。
如何搜索莫斯科、圣彼得堡、纽约和洛杉矶?
最佳答案
所以您的 cities[0] 只取第一个城市,我假设您需要搜索所有城市,所以我会检查 cities.contains
。我还会使用 localizedCaseInsensitiveContains 而不是手动小写。
cities.contains {
$0.localizedCaseInsensitiveContains(searchText)
}
过滤器将是:
cityList.filter { list in
list.cities.contains { city in
city.localizedCaseInsensitiveContains(searchText)
}
}
关于ios - 使用小写字母和数组过滤搜索文本的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943517/