Как искать в Firebase Database Swift - PullRequest
0 голосов
/ 16 ноября 2018

я пытаюсь использовать UISearchbar с моей базой данных Firebase, но я не знаю, является ли мой код быстрым или нет, потому что каждый раз, когда я его запускаю, происходит сбой, и это мой код

var hotelList = [hotelsModel]()
var hotelsArray : [NSDictionary] = []
var filterHotels : [NSDictionary] = []
var databaseRef = Database.database().reference()


databaseRef.child("Hotels").queryOrdered(byChild: "name").observe(.childAdded, with: { (snapshot) in
        self.hotelsArray.append(snapshot.value as! NSDictionary)

        self.tableView.insertRows(at: [IndexPath(row: self.hotelsArray.count-1, section: 0)], with: UITableView.RowAnimation.automatic)
  1. Элемент списка

    }) { (error) in
        print(error.localizedDescription)
    }
    

    func tableView (_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {// создание ячейки с помощью пользовательского класса let cell = tableView.dequeueReusableCell (withIdentifier: "cell", для: indexPath) как!hotelsTableViewCell

    let hotelSearch : NSDictionary?
    //the artist object
    var hotel: hotelsModel
    //getting the artist of selected position
    //hotel = hotelList[indexPath.row]
    if searchController.isActive && searchController.searchBar.text != "" {
    
        hotelSearch = filterHotels[indexPath.row] as! NSDictionary
    } else {
        //getting the artist of selected position
        hotel = hotelList[indexPath.row]
    }
    
    //getting the artist of selected position
    hotel = hotelList[indexPath.row]
    //adding values to labels
    cell.lblName.text = hotel.name
    cell.lblLocation.text = hotel.location
    cell.appSuggest.text = hotel.appSuggest
    cell.price.text = hotel.price
    cell.canceletion.text = hotel.cancelation
    cell.paymentNeeded.text = hotel.paymentNeeded
    
    if let imgUrl = hotel.img{
        let url = URL(string: imgUrl)
        cell.img.kf.setImage(with: url)
        cell.img.clipsToBounds = true
        cell.img.layer.cornerRadius = 10
        cell.img.layer.shadowColor = UIColor.black.cgColor
        cell.img.layer.shadowOpacity = 1.8
        cell.img.layer.shadowOffset = CGSize(width: 5, height: 0)
    }
          return cell
    

    } func updateSearchResults (для searchController: UISearchController) {// обновить результат панели поиска //filterHotels(serachText:searchController.searchBar.text!) filterHotels.removeAll (hotelsHertel.fils){(text) -> Bool in let tmp: NSString = (текст как? NSString ?? nil) ?? "" let range = tmp.range (of: searchController.searchBar.text !, options: NSString.CompareOptions.caseInsensitive)return range.location! = NSNotFound}) self.tableView.reloadData ()}

в этой строке произошел сбой

self.hotelsArray.append(snapshot.value as! NSDictionary)

Как решить эту проблему?

Спасибо

...