如果密码匹配,我正在尝试显示警告消息。一切都很好:
1)调用Web服务并返回密码
2)流程进入与密码匹配
相关的if条件results
成功调用displayAlert函数:
if(userPasswd == sysPasswd)
{
displayAlert(userMessage: "Welcome! You have been authenticated")
return
}
执行最后一条语句时会出现此错误
func displayAlert(userMessage: String)
{
// create the alert
let myAlert = UIAlertController(title: "Alert", message: userMessage, preferredStyle: UIAlertControllerStyle.alert)
// add an action (button)
myAlert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
// show the alert
self.present(myAlert, animated: true, completion: nil)
}
为什么会这样?我是Swift的初学者,还在学习绳索。没有黄旗等。
答案 0 :(得分:0)
用户界面元素只能在主线程上使用。如果您尝试从后台线程更新UI,则需要在调用DispatchQueue.main.async
时包装UI调用。
func displayAlert() {
DispatchQueue.main.async {
let myAlert = UIAlertController(etc...)
...
}
}