2017-09-16 8 views
-1

ビューが読み込まれている間に検索バーで検索を実行したとき(サーバーからデータを読み込む)にはエラーが発生します。検索時に検索バーエラーが発生する

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に来る、私は空の配列として

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宣言auxiliarを割り当てるときです。 auxiliar.counttableView(_:, numberOfRowsInSection:)によってアクセスされた場合

var auxiliar = [Shops]() 

は、tableViewは空になります。その後、データを取得し、searchBar(_:,textDidChange:)が呼び出されると、auxiliarが再び設定されます。テーブルをリロードすると、新しいデータが表示されます。

関連する問題