我在Swift中有一个2D数组。
let Name:[[String]] =[["India", "PA"], ["Africa", "SA"]]
我正在尝试在iOS应用中实现搜索栏并尝试过滤此2D数组。
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String, indexPath: IndexPath) {
filteredArray = Name.filter ({(names: String) -> Bool in
return names.lowercased().range(of: searchText.lowercased()) != nil
})
if searchText = ""
{
shouldShowSearchResult = true
self.tableView.reloadData()
}
else
{
shouldShowSearchResult = false
self.tableView.reloadData()
}
但是我收到了编译错误:
无法转换类型(String)的值 - >布尔对预期的争论 type'([String]) - >布尔“
答案 0 :(得分:0)
首先,您应该始终发布Minimal, Complete, and Verifiable example。
所以问题确实变成了
给出像这样的数组
let data = [["India", "PA"], ["Africa", "SA"]]
并给出一个像这样的关键字
let keyword = "ind"
如何只检索包含关键字?
的元素(子数组)答案是
let lowercasedKeyword = keyword.lowercased()
let filtered = data.filter {
$0[0].lowercased().range(of: lowercasedKeyword) != nil
|| $0[1].lowercased().range(of: lowercasedKeyword) != nil }
使用数组和数组作为模型是一个非常危险的设计选择。 你为什么不创建这样的模型?
struct Country {
let name: String
let code: String
}
然后构建你的数组,如下所示?
let countries = [Country(name: "India", code: "PA"), Country(name: "Africa", code: "SA")]