是否可以在swift中创建一个搜索栏,用户正在搜索字典,用户可以键入列表元素或键本身,搜索栏只会返回键? / p>
换句话说,考虑一下这本词典:
let dict = [ "primes" : [2,3,5,7] ,
"even" : [2,4,6,8 ] ,
"odd" : [1,3,5,7] ,
"fib" : [1,1,2,3,5]
]
如果用户键入7,搜索栏将返回素数和奇数
如果用户键入奇数,搜索栏将返回奇数。
答案 0 :(得分:0)
textDidChange
的 UISearchBarDelegate
委托功能。
在此功能中,您可以编写过滤器代码。
以下是基于词典的示例。此示例中的结果是字典键。
var filtered:[String] = []
let dict = [ "primes" : [2,3,5,7] , "even" : [2,4,6,8 ] , "odd" : [1,3,5,7] , "fib" : [1,1,2,3,5] ]
override func viewDidLoad() {
super.viewDidLoad()
searchBar.delegate = self
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
// just to reset the array and result text
filtered = []
textView.text = ""
_ = dict.filter {
let key = $0;
_ = $1.filter {
if ($0 == Int(searchText)) {
filtered.append(key)
}
return true
}
return true
}
// show results
textView.text = filtered.description
}