繁体   English   中英

从数据库快速检索Firebase数据

[英]Swift Retrieve Firebase Data from Database

我正在尝试从Firebase检索数据,但是出现问题。

let refEmployees = Database.database().reference(withPath: "Employees")

    refEmployees.child("Logan").observeSingleEvent(of: .value, with: {
        snapshot in

        let shift = snapshot.value as? String
        self.shifts.append(shift!)
        self.workSchedule.reloadData()
    })

那是我的代码,我的数据库看起来像这样

当我运行它时,我得到

致命错误:解开Optional值时意外发现nil

有任何想法吗? 我很沮丧 我还可以同时将信息添加到数据库,并将其更改为childAdded ,并且信息将正确加载。

通常,我从不尝试获取引用“ withPath”,而是通过孩子。 我会尝试这样做:

let ref = Database.database().reference().child("Employees").child("Logan")

另一方面,是一种强制拆开您不知道实际要得到的可选选项的错误做法,我将闭包更改为:

ref.observeSingleEvent(of: .value, with: {
    snapshot in

    guard let shift = snapshot.value as? String else {
        print("Value is Nil or not String")
        return
    }
    self.shifts.append(shift)
    self.workSchedule.reloadData()
})

就像评论中的某人说的那样,最好先打印可选值,以查看您是否实际上从数据库中获取了所需的值。

希望这可以帮助

let refEmployees = Data`base.database().reference()

refEmployees,child("Employees").child("Logan").observeSingleEvent(of: .value, with: {
    snapshot in

    let shift = snapshot.value! as! [String : AnyObject]

    let dictKeys = [String](snapshot.keys)
//Will give you all` keys from DB 0,1,2,3,4,5,6

    let dictValues = [AnyObject](snapshot.values)
//will give you` all values "off", "off", "2-10"..."off"
//use keys or values append in array if you want as I could not understand what you are trying to save in self.shifts

    self.shifts.append(shift!)
    self.workSchedule.reloadData()
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM