【问题标题】:Can't get value from firebase无法从 firebase 获得价值
【发布时间】:2017-10-01 20:00:19
【问题描述】:

当我尝试从我的数据库中获取 isBusy 属性的值时遇到问题。一个使用过的断点,它甚至没有转到我为 isBusy 分配值的指令,它分配空字符串并转到 else 条件。

if docChild == 0 {
        let selectedDoctor = Doctors.doc1
        var isBusy = String()

        databaseHandle = reference.child(selectedDoctor).child(dateChild).child(timeChild).child(ReservationFields.isBusy).observe(.childAdded, with: { (snapshot) in
            isBusy = snapshot.value as! String
        })

        if isBusy == "false" {
            reference.child(selectedDoctor).child(dateChild).child(timeChild).child(ReservationFields.isBusy).setValue("true")
            reference.child(selectedDoctor).child(dateChild).child(timeChild).child(ReservationFields.firstname).setValue(firstNameLabel.text)
            reference.child(selectedDoctor).child(dateChild).child(timeChild).child(ReservationFields.lastname).setValue(lastNameLabel.text)
            reference.child(selectedDoctor).child(dateChild).child(timeChild).child(ReservationFields.pesel).setValue(peselLabel.text)
            reference.child(selectedDoctor).child(dateChild).child(timeChild).child(ReservationFields.telephone).setValue(phoneLabel.text)


        } else {
            createAlert(title: "Przepraszamy - termin jest zajęty", message: "Proszę wybrać inny termin")

        }

database

【问题讨论】:

    标签: swift firebase firebase-realtime-database


    【解决方案1】:

    答案很简单。 Firebase 数据库请求是异步的,因此在您到达 if isBusy == "false" 语句时,该值并未从数据库中获取。相应地更改您的代码:

    if docChild == 0 {
        let selectedDoctor = Doctors.doc1
        var isBusy = String()
    
        databaseHandle = reference.child(selectedDoctor).child(dateChild).child(timeChild).child(ReservationFields.isBusy).observe(.childAdded, with: { (snapshot) in
            isBusy = snapshot.value as! String
            if isBusy == "false" {
                reference.child(selectedDoctor).child(dateChild).child(timeChild).child(ReservationFields.isBusy).setValue("true")
                reference.child(selectedDoctor).child(dateChild).child(timeChild).child(ReservationFields.firstname).setValue(firstNameLabel.text)
                reference.child(selectedDoctor).child(dateChild).child(timeChild).child(ReservationFields.lastname).setValue(lastNameLabel.text)
                reference.child(selectedDoctor).child(dateChild).child(timeChild).child(ReservationFields.pesel).setValue(peselLabel.text)
                reference.child(selectedDoctor).child(dateChild).child(timeChild).child(ReservationFields.telephone).setValue(phoneLabel.text)
    
    
            } else {
                createAlert(title: "Przepraszamy - termin jest zajęty", message: "Proszę wybrać inny termin")
    
            }
       })
    

    如您所见,我只是将您的代码移入处理程序,因此它会在获取您的值后执行。

    【讨论】:

    • XCode 告诉我写 self.在许多地方,现在它不会转到我为 isBusy 和下一条指令赋值的指令。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 2017-09-07
    • 2021-04-24
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2017-05-06
    相关资源
    最近更新 更多