【发布时间】:2016-09-16 13:06:35
【问题描述】:
我有一个UITableViewController,并添加了一个搜索栏作为标题视图。当搜索栏中的文本发生更改但它不起作用时,我正在尝试重新加载表格视图数据。
这是我的textDidChange 方法。对于上下文,jsonArray 是 [[String: AnyObject]] 并且是从另一个视图控制器传递的。然后在viewDidLoad() 中将searchResults 数组设置为jsonArray,并且表格视图使用searchResults 作为它的数据源。
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchText.characters.count == 0 {
searchResults?.removeAll()
searchResults = jsonArray!
} else {
searchResults?.removeAll()
for market in jsonArray! {
let titleRange = market["name"]?.range(of: searchText, options: .caseInsensitive)
var address = String()
var city = String()
var state = String()
var zip = Int()
if let address1 = market["address1"] as? String {
address = address1
}
if let city1 = market["city"] as? String {
city = city1
}
if let state1 = market["state"] as? String {
state = state1
}
if let zip1 = market["zip"] as? Int {
zip = zip1
}
let zipCode = String(describing: zip)
let addressString = String("\(address) " + "\(city), " + "\(state) " + "\(zipCode)")
let addressRange = addressString?.range(of: searchText, options: .caseInsensitive)
if titleRange != nil {
searchResults?.append(market)
} else if addressRange != nil {
searchResults?.append(market)
}
}
}
tableView.reloadData()
}
我在 for 循环之后的 else 语句末尾添加了这个 print 语句,它显示该数组包含它最初包含的所有对象,因此看起来我的范围无法正常工作。
print("search array: \(searchResults?.count)")
【问题讨论】:
标签: ios swift uitableview uisearchbar