警报 - libc ++ abi.dylib:以NSException类型的未捕获异常终止

时间:2017-09-03 16:49:28

标签: swift

如果密码匹配,我正在尝试显示警告消息。一切都很好:

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的初学者,还在学习绳索。没有黄旗等。

1 个答案:

答案 0 :(得分:0)

用户界面元素只能在主线程上使用。如果您尝试从后台线程更新UI,则需要在调用DispatchQueue.main.async时包装UI调用。

func displayAlert() {
    DispatchQueue.main.async {
        let myAlert = UIAlertController(etc...)
        ...
    }
}