【问题标题】:Swift Firebase Database Error HandlingSwift Firebase 数据库错误处理
【发布时间】:2018-04-18 10:38:30
【问题描述】:

我有下面的代码 sn-p,如果发生错误,我想显示一个带有错误消息的标签,然后是一个重试按钮。但是,当发生错误时,错误会打印到日志中,但不会显示标签和按钮。我错过了什么吗?

            user_ref = Database.database().reference(withPath: "userdetails")

            self.user_ref.observe(.value, with: { snapshot in
                if !snapshot.exists() { return }
                let snapshotValue = snapshot.value as? NSDictionary

                if let temp_usertype = snapshotValue?["usertype"] as? String {
                    usertype = temp_usertype
                }

                self.user_ref.removeAllObservers()

                self.close()
            })
            {(error) in
                print(error.localizedDescription)

                self.lblMessage.text = "\(error.localizedDescription)"
                self.btnRetry.isEnabled = true
                self.btnRetry.alpha = 1.0
                return
            }

【问题讨论】:

    标签: swift firebase error-handling firebase-realtime-database


    【解决方案1】:

    是的。对 UI 的更改需要在主线程上处理。您需要将该代码放入 Async.Main 调用中,如下所示:

    DispatchQueue.main.async {
    
    }
    

    有时尝试调用主线程并在闭包中更新 UI 会导致崩溃,因此最好将错误对象通过完成块传递,当它到达结束函数时,调用一个启动警报的函数将错误消息显示为标题,将代码显示为消息(反之亦然),并有一个关闭按钮。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 2016-12-27
    • 2017-12-21
    • 1970-01-01
    相关资源
    最近更新 更多