База данных для разбора - PullRequest
       13

База данных для разбора

0 голосов
/ 08 октября 2018

Я планирую получить данные из базы данных Firebase в TableView с помощью этого кода, что не так с моим кодом и как я могу исправить это, чтобы все данные отправлялись в мое представление таблицы

База данных Firebase Беги по телефону

А это мои данные в базе данных: And this is my data in the database

import UIKit
import Firebase

class Ordersv: UIViewController, UITableViewDataSource, UITableViewDelegate {

    var array = [String]()
    var ref: DatabaseReference!
    var handle: DatabaseHandle!
    @IBOutlet weak  var TableView: UITableView!
    @IBAction func add (_ sender: Any){
        if textField.text != ""{
            ref.child("list").childByAutoId().setValue(textField.text)
            textField.text = ""
        }
    }

    @IBOutlet weak  var textField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        handle = ref?.ref.child ("Orders/Customer/Detils/").observe(.value, with: { (snapshot) in
            if let item = snapshot.value as? String {
                self.array.append(item)
                self.TableView.reloadData()
            }
        })

        self.TableView.delegate = self
        self.TableView.dataSource = self

        // Do any additional setup after loading the view.
    }


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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell =  TableView.dequeueReusableCell(withIdentifier: "Cell")! as UITableViewCell
        cell.textLabel?.text = array[indexPath.row]
        return cell
    }

}

1 Ответ

0 голосов
/ 08 октября 2018

В коде есть несколько неправильных вещей:

  1. Вы никогда не инициализируете ref.
  2. Когда вы наблюдаете .value, вы получаете несколько узлов обратно.Ваш код не обрабатывает этот факт.

Чтобы исправить оба, я рекомендую:

let ref = Database.database().reference()
handle = ref.child("Orders/Customer/Detils/").observe(.childAdded, with: { (snapshot) in
    let value = snapshot.value as? NSDictionary
    let name = value?["Name"] as? String ?? ""

    self.array.append(name)
    self.TableView.reloadData()
})

Приведенный выше код наблюдает событие .childAdded, которое запускается сразу для каждого существующегодочерний узел, а затем один раз для каждого последующего добавляемого дочернего узла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...