我试图检索UITableView Cell中包含的详细文本(这是一个电话号码" String")然后在一个可以拨打电话的功能中使用它。
问题:
我的应用不断崩溃,错误"致命错误:在解开可选值&#34时意外发现nil; 即使变量中有值。
我确定我在强行拆开可选项时出错了
SELECT
答案 0 :(得分:3)
如果你不能100%确定它可以被打开,请不要使用力展开。如果可能的话,尽量避免它!
您的openPhoneApp
函数必须收到一个非零字符串,所以一切都可以确定。
尝试用以下方法替换你的力量:
func openPhoneApp(phoneNum: String) {
guard let url = NSURL(string: "tel:\(phoneNum)") else {
print("badly formed telephone url")
return
}
UIApplication.sharedApplication().openURL(url)
}
虽然我认为你的功能名称意味着它会打开手机应用程序,所以也许你应该去找一个正确形成的URL,如下所示:
func openPhoneApp(phoneURL: NSURL) {
UIApplication.sharedApplication().openURL(phoneURL)
}
并在调用之前检查这种东西:
if let phone = getPhone, phoneURL = NSURL(string: "tel:\(phone)") {
openPhoneApp(phoneURL)
}
答案 1 :(得分:1)
你检查过phoneNumber变量的值吗?它可能是零。
你可以查看这个答案:我认为这可以解决你的问题。
What does "fatal error: unexpectedly found nil while unwrapping an Optional value" mean?
特别是这个答案
答案 2 :(得分:1)
请使用tel:// scheme并始终致电
UIApplication.sharedApplication().canOpenURL
之前