无法从Firebase实时数据库获取数据/将数据读取到UITableViewController

时间:2019-04-27 03:44:11

标签: swift xcode firebase-realtime-database fetch

我能够成功地将数据从应用程序写入Firebase实时数据库。我无法检索数据并将其显示在UIViewController中。

我有搜索堆栈,YouTube和Firebase文档,也没有运气。我打印出了计数,它返回0。我相信For循环未在迭代或未正确附加到数组中。我有力包装和拆开refRepairs,并从中放置databaseHandle。

    override func viewDidLoad() {
    super.viewDidLoad()
    refRepairs = Database.database().reference().child("repairs");

    //observing the data changes
    refRepairs!.child("repairs").observe(DataEventType.value, with: { (snapshot) in

        //if the reference have some values
        if snapshot.childrenCount > 0 {

            //clearing the list
            self.repairList.removeAll()

            //iterating through all the values
            for repairs in snapshot.children.allObjects as! [DataSnapshot] {
                //getting values
                let repairObject = repairs.value as? [String: AnyObject]
                let brand  = repairObject?["brand"]
                let id  = repairObject?["id"]
                let modelNumber = repairObject?["modelNumber"]

                //creating artist object with model and fetched values
                let repair = RepairModel(id: id as! String?, brand: brand as! String?, modelNumber: modelNumber as! String?)

                //appending it to list
                print(snapshot.childrenCount)

                self.repairList.append(repair)
            }

            //reloading the tableview
            self.doListTableView.reloadData()
        }
    })
}

我进行了更改,并且可以正常运行!!!现在,我正在尝试通过uid将记录添加到数据库中,并且已经成功完成了。现在,我有一个无法显示记录的问题。我打印了计数,它返回了1条正确的记录。这是新代码。

    override func viewDidLoad() {
    super.viewDidLoad()
    refRepairs = Database.database().reference().child("repairs");

    //observing the data changes
    //refRepairs!.child("uid").observe(DataEventType.value, with: { (snapshot) in


        //observing the data changes
        refRepairs!.observe(DataEventType.value, with: { (snapshot) in
        //if the reference have some values
        if snapshot.childrenCount > 0 {

            //clearing the list
            self.repairList.removeAll()

            //iterating through all the values
            for repairs in snapshot.children.allObjects as! [DataSnapshot] {
                //getting values
                let repairObject = repairs.value as? [String: AnyObject]
                let brand  = repairObject?["brand"]
                let uid = repairObject?["uid"]
                let id  = repairObject?["id"]
                let modelNumber = repairObject?["modelNumber"]

                //creating artist object with model and fetched values
                let repair = RepairModel(uid: uid as! String?, id: id as! String?, brand: brand as! String?, modelNumber: modelNumber as! String?)

                //appending it to list
                print(snapshot.childrenCount)

                self.repairList.append(repair)
            }

            //reloading the tableview
            self.doListTableView.reloadData()
        }
    })
}

1 个答案:

答案 0 :(得分:0)

当您“观察数据更改”时,您正在寻找另一个名为维修的孩子。试试这个:

OFS

如果那不起作用。使用Firebase中的observeSingleEvent方法