我有下面的代码片段,如果发生错误,我想显示带有错误消息的标签,然后是重试按钮。但是,当发生错误时,错误将打印到日志中,但不会显示标签和按钮。我错过了什么吗?
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
}
答案 0 :(得分:0)
是。需要在主线程上处理对UI的更改。您需要将该代码放入Async.Main调用中,如下所示:
DispatchQueue.main.async {
}
有时尝试调用主线程并更新闭包中的UI会导致崩溃,因此如果您通过完成块传递错误对象并且当它到达结束函数时会更好,请调用启动警报的函数将错误消息显示为标题,将代码显示为消息(反之亦然),并有一个关闭按钮。