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.
这是我用来打电话的代码。但它因无效号码而崩溃。 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.