я пытаюсь использовать 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)
Элемент списка
}) { (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)
Как решить эту проблему?
Спасибо