2017-09-16 118 views
-1

當我在搜索欄中執行搜索時,正在加載視圖(從服務器加載數據)我得到的錯誤是auxiliar爲零。搜索時出現搜索欄錯誤

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() 
} 
+0

你在哪裏給'auxiliar'賦值?我猜'numberOfRowsInSection'在異步網絡請求可能返回之前被調用,因此'auxiliar'沒有設置並且具有默認的'nil'值。 –

+0

很好的問題。請檢查我的問題! – leo0019

+0

那麼商店如何定義和分配價值? –

回答

0

聲明auxiliar爲空數組。

var auxiliar = [Shops]() 

auxiliar.counttableView(_:, numberOfRowsInSection:)訪問時,tableView將是空的。然後,當您獲取數據並調用searchBar(_:,textDidChange:)時,將再次設置auxiliar。重新加載表格時,將顯示新數據。