swift - 无法从 Firebase 获取值(value)

标签 swift firebase firebase-realtime-database

当我尝试从我的数据库中获取 isBusy 属性的值时遇到问题。 A 使用断点,它甚至不转到我为 isBusy 赋值的指令,它分配空字符串并转到其他条件。

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

最佳答案

答案相当简单。 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")

        }
   })

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

关于swift - 无法从 Firebase 获取值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46516370/

相关文章:

javascript - 无法上传到 Firebase/FireStorage?

swift - 重复图案图像作为 SwiftUI 中的背景?

Swift:如何将 AnyObject 设置为 nil 或等价物

java - 使用 Java 计算 Firebase 数据库节点数

firebase - 在 firebase、flutter 中向已使用电子邮件密码注册的用户添加电话号码验证

java - 如何对多个 child 执行查询?

java - 尝试将图像从 firebase 数据库获取到存储时发生 StorageException

Firebase 数据库区分在线和离线数据

ios - 如何将 Firebase 下载文件与进度 View 链接?

ios - 将 Obj-C 桥接到 Swift 之后缺少什么