Swift Tableview не загружает данные - PullRequest
0 голосов
/ 25 января 2020

Я учусь разрабатывать приложение iOS, и в моем первом приложении у меня есть tableView, который должен отображать данные из FirebaseDatabase.

Ниже приведена структура базы данных:

enter image description here

Ниже приведен код из viewcontroler.swift

import UIKit
import Firebase

class ctrTableViewController: UITableViewController {

    var _ctrsArray = [String]()

    var dbref = Database.database().reference()

    let deviceID = UIDevice.init().identifierForVendor

    func loadCtrs() {
        // Load ctrs from DB to Tableview

        dbref.child("\(String(describing: deviceID))/ctrs").observeSingleEvent(of: .value, with: { snapshot in
            if let ctrs = snapshot.value as? [String: Any] {
                for (ctr, _) in ctrs {
                    self._ctrsArray.append(ctr)
                    self.tableView.reloadData()
                }
            }
        })
    }

    override func viewDidLoad() {

        super.viewDidLoad()
        loadCtrs()

         self.navigationItem.leftBarButtonItem = self.editButtonItem
    }

    // MARK: - Table view data source

    override func numberOfSections(in tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 0
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return _ctrsArray.count
    }

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

}

Что мне не хватает? TIA за всю вашу помощь.

Ответы [ 2 ]

1 голос
/ 25 января 2020

Вы устанавливаете numberOfSections на 0, поэтому никакие данные не могут быть отображены. Если вы хотите только 1 раздел, установите 1 или удалите метод. По умолчанию установлено значение 1.

0 голосов
/ 25 января 2020

Чтобы предотвратить сбой, вы должны зарегистрировать свою ячейку для повторного использования, например, в viewDidLoad (до loadCtrs), если вы используете перья, добавьте:

tableView.register(UINib(nibName: <#nibName#>, bundle: nil), forCellReuseIdentifier: "ctrCell")

И если вы ' Вы не используете перья для своих пользовательских ячеек:

tableView.register(<#CustomClass#>.self, forCellReuseIdentifier: "ctrCell")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...