Я создал табличное представление, содержащее данные из Firebase.И теперь я хочу добавить панель поиска, чтобы отфильтровать мои данные по storeName
.
. Вот так выглядит мой текущий контроллер табличного представления:
Моя база данных выглядит так:
![enter image description here](https://i.stack.imgur.com/kDC1tm.png)
Моя модель данных (StoreModel):
class StoreModel{
var name: String?
var desc: String?
var url: String?
var rate: Double
init(
name: String?, desc: String?, url: String?, rate: Double){
self.name = name
self.desc = desc
self.url = url
self.rate = rate
}
Как получить данные из Firebase:
var storeList = [StoreModel]()
var refStores: DatabaseReference!
override func viewDidLoad() {
super.viewDidLoad()
FirebaseApp.configure()
refStores = Database.database().reference().child("stores")
refStores.observe(DataEventType.value, with: {(snapshot) in
if snapshot.childrenCount > 0{
self.storeList.removeAll()
for stores in snapshot.children.allObjects as! [DataSnapshot]{
let storeObject = stores.value as? [String: AnyObject]
let storeName = storeObject?["storeName"]
let storeDesc = storeObject?["storeDesc"]
let storeUrl = storeObject?["storeUrl"]
let storeRate = storeObject?["storeRate"]
let store = StoreModel(
name: storeName as! String?, desc: storeDesc as! String?, url: storeUrl as! String?, rate: storeRate as! Double)
self.storeList.append(store)
}
self.tblSearch.reloadData()
}
})
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ViewControllerTableViewCell
let store: StoreModel
store = storeList[indexPath.row]
cell.labelName.text = store.name
cell.labelDesc.text = store.desc
cell.imageStore.setImage(from: store.url)
cell.imageStore.clipsToBounds = true
cell.imageStore.layer.cornerRadius = 20
cell.imageGrey.clipsToBounds = true
cell.imageGrey.layer.cornerRadius = 20
cell.cosmosView.rating = store.rate
return cell
}
Спасибо за вашу помощь!