Swift 搜索时出现搜索栏错误
当我在视图加载(从服务器加载数据)时在搜索栏中执行搜索时,我得到的错误是auxiliar为nilSwift 搜索时出现搜索栏错误,swift,uitableview,Swift,Uitableview,当我在视图加载(从服务器加载数据)时在搜索栏中执行搜索时,我得到的错误是auxiliar为nil var isSearch = false var auxiliar : [Shops]! var searchActive: Bool = false func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { if searchActive { r
var isSearch = false
var auxiliar : [Shops]!
var searchActive: Bool = false
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searchActive
{
return auxiliar.count
}
return shops.count
}
数据以JSON格式发送到TableView
这是我指派助手的时间
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
auxiliar = shops.filter { $0.shopname.range(of: searchText, options: .caseInsensitive, range: nil, locale: nil) != nil}
if searchText == "" || searchBar.text == nil {
auxiliar = shops
}
tableView.reloadData()
}
将
auxiliar
声明为空数组
var auxiliar = [Shops]()
当
表视图(:,numberofrowsinssection:)
访问辅助计数时,表视图将为空。然后,当您获取数据并调用搜索栏(u:,textDidChange:)
时,将再次设置auxiliar
。重新加载表格时,将显示新数据。您在哪里为auxiliar
赋值?我猜在异步网络请求返回之前调用了numberOfRowsInSection
,因此没有设置auxiliar
,并且具有默认的nil
值。问得好。请检查我的问题!!那么shops是如何定义和赋值的呢?我认为应该将auxiliar
声明为var-auxiliar=[shops]()
如果希望它是可选的,那么应该这样做:var-auxiliar:[shops]?=[Shops]()
那么显然你必须将auxiliar.count
更改为auxiliar?.count