iOS Swift 由于手机号码无效导致通话崩溃

iOS Swift call Crashes because of Invalid mobile number

这是我用来打电话的代码。但它因无效号码而崩溃。 11位数字以6次崩溃开头 但是以 0 开头的 11 位数字工作正常 通常用 10 位数字工作正常。 有人可以帮忙吗?

let myurl=URL(string: "tel://\(selectedEmployeeContact)")
    let isInstalled=UIApplication.shared.canOpenURL(myurl!)
    if(isInstalled)
    {
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(myurl!)
        } else {
            UIApplication.shared.openURL(myurl!)
        }
    }

问题:myurl这个表达式是什么意思!如果 myurl 为零怎么办?

答:感叹号会导致崩溃。故意地。

所以启动你的调试器。设置一个断点,然后单步执行每一行。检查相关变量。您很可能会发现 myurl 为零。如果没有,逐行检查代码并告诉我们崩溃发生的确切位置。

修改您的代码以防止崩溃:-

guard let myurl=URL(string: "tel://\(selectedEmployeeContact)") else {return}
let isInstalled=UIApplication.shared.canOpenURL(myurl)

If your myurl is nil then it will crash because it will force unwrapped the Value.