Получение всех данных значения Firebase Swift - PullRequest
0 голосов
/ 10 мая 2019

В моей базе данных "deviceRooms1, deviceRooms2, ...." у меня есть данные в виде.Они все в столе в комнате.Когда вы добавляете данные в таблицу комнат, они отображаются в виде deviceRooms1 + 1.Как я могу извлечь все данные deviceRooms при добавлении данных в эту таблицу комнат?Например, в моем коде я могу получить данные до devicerooms5.как автоматически добавить deviceromss в ArrayList при их добавлении?

Firebase Database

class MainRoomTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 
 private var myTableView: UITableView!
    var tableRowss = [String]()
 @objc func addRoom() {
        let alert = UIAlertController(title: "Oda Ekle", message: "Oda ekle", preferredStyle: .alert)

        alert.addTextField { (textField) in
            textField.placeholder = "Odanın Adını Giriniz.."
        }

        alert.addAction(UIAlertAction(title: "Oda?", style: .default, handler: { [weak alert] (_) in
            let text = alert?.textFields![0]
            self.tableRowss.append((text?.text)!)
            let ref = Database.database().reference()

            let countıtem: Int = (Int(self.tableRowss.count))
            ref.child("0").child("Rooms").child("Rooms" + String(countıtem)).setValue(text?.text)
            self.myTableView.reloadData()

        }))
        self.present(alert, animated: true, completion: nil)
    }
 @objc func fetchRooms()
        {

            let ref = Database.database().reference().child("0").child("Rooms")

            ref.observeSingleEvent(of: .value, with: { (snapshot) in
                let value: NSDictionary = snapshot.value as! NSDictionary

                // let deviceTitle: String = value["title"] as! String

                let deviceRooms1 = value["Rooms1"] as? String ?? ""
                let deviceRooms2 = value["Rooms2"] as? String ?? ""
                let deviceRooms3 = value["Rooms3"] as? String ?? ""
                let deviceRooms4 = value["Rooms4"] as? String ?? ""
                let deviceRooms5 = value["Rooms5"] as? String ?? ""
                self.tableRowss.append(deviceRooms1)
                self.tableRowss.append(deviceRooms2)
                self.tableRowss.append(deviceRooms3)
                self.tableRowss.append(deviceRooms4)
                self.tableRowss.append(deviceRooms5)

                self.myTableView.reloadData()
            })

    }
 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        print("Num: \(indexPath.row)")
        print("Value: \(tableRowss[indexPath.row])")
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return tableRowss.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath as IndexPath)
        cell.textLabel!.text = "\(tableRowss[indexPath.row])"
        return cell
    }

1 Ответ

2 голосов
/ 10 мая 2019

Можно попробовать

 let dic = snapshot.value as! [String:String]
 self.tableRowss = Array(dic.values)
 self.myTableView.reloadData()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...