2017-02-24 6 views
1

私はすぐに習得することを学び始めています。 Firebaseデータベースのデータを検索するための検索バーを追加します。検索バーが追加されましたが、検索結果をフィルタリングするコードがこのエラーでクラッシュし続けます。スウィフト検索コントローラがクラッシュし続ける

キャッチされていない例外 'NSInternalInconsistencyException'が原因でアプリを終了しています。理由: '無効な更新:セクション0の行数が無効です。更新(0)後の既存のセクションに含まれる行は、更新前のそのセクションに含まれる行の数(0)、そのセクションに挿入または削除された行の数をプラスまたはマイナスした値に等しくなければなりません)と、そのセクションの内外に移動した行の数をプラスまたはマイナスします(0は移動し、0は移動しません)。

エラーは、データ・ソース・アレイに同一のインデックスに項目を挿入する必要がテーブルビューに行を挿入する前に、このライン

self.tableView.insertRows(at: [IndexPath(row: self.businessArray.count-1, section: 0)], with: UITableViewRowAnimation.automatic)

override func viewDidLoad() { 
    super.viewDidLoad()  

    ref = FIRDatabase.database().reference(fromURL:"") 


    searchController.searchResultsUpdater = self 
    searchController.dimsBackgroundDuringPresentation = false 
    definesPresentationContext = true 
    tableView.tableHeaderView = searchController.searchBar 



    ref.child("Businesses").queryOrdered(byChild: "Basic-Info/business").observe(.childAdded, with: { (snapshot) in 

     //insert the rows 
     self.tableView.insertRows(at: [IndexPath(row: self.businessArray.count-1, section: 0)], with: UITableViewRowAnimation.automatic) 
    }) { (error) in 
     print(error.localizedDescription) 
    } 


} 
+0

あなたは私はあなたがコードサンプル – dan

答えて

0

を指しています。

しかし、この場合、私は@vadianが言ったように、あなたはあなたがに反映しようとしているものと一致するようにデータソースを変更する必要があり、データ・ソース・アレイにクエリ結果を割り当てることをお勧めしますとreloadData()

+0

をしてください呼び出す前に、あなたの' businessArray'にオブジェクトを追加する必要があります'FireBase'で返されますが、返された' snapshot'にはフィルタされた項目が含まれています。 'businessArray'に配列を代入し、テーブルビューで' reloadData() 'を呼び出します。 – Ola

+0

を提供できる方法がある私は慣れていないんだ、という方法を正確に行います 'insertRows' – vadian

0

を呼びたいですUI。したがって、UITableViewに行を挿入する場合は、最初にを追加して、追加する行の同じインデックスのデータソースにオブジェクトを挿入する必要があります。これと同じように:

// First modify datasource 
let businessObjectToInsert = BusinessObject() // or whatever your class is 
self.businessArray.append(businessObject) 

// Then insert row into `UITableView` 
self.tableView.insertRows(at: [IndexPath(row: self.businessArray.count-1, section: 0)], with: UITableViewRowAnimation.automatic) 
関連する問題