【发布时间】:2016-04-06 20:19:47
【问题描述】:
我正在使用 Factual 获取当地餐馆的电话号码,并为最终用户提供了在我的应用程序中拨打该地点的选项,但由于某些奇怪的原因,它一直在崩溃。
这是有效的代码:
func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
if item.tag == 1 {
print("\(RestaurantCountry)")
}
}
RestaurantCountry 代表电话号码。它在控制台中打印电话号码,但是当我使用此代码时它崩溃了。有人知道为什么会这样吗?
func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
if item.tag == 1 {
let url:NSURL = NSURL(string: "tel://\(RestaurantCountry)")!
UIApplication.sharedApplication().openURL(url)
}
}
这段代码崩溃了,但我觉得它应该可以工作。谁能告诉我为什么会这样?
【问题讨论】:
-
我的猜测是你的强制解包失败,因为 NSURL 返回 nil。省略“tel:”后的“//”
-
您可能还需要删除空格。使用不安全!在这个情况下。你应该使用 ?如果 URL 为 nil,则打印某种错误
-
请更新您的问题,并提供有关崩溃错误消息的明确详细信息,并指出导致崩溃的确切行。那么所有的猜测都可以停止了。
-
Swift 提供了a million safe ways of dealing with optionals... 而你选择了不安全的那个;)
-
仅供参考 - 您对问题所做的更新表明您的应用没有崩溃。它甚至没有运行。这只是 Xcode 指出编码问题。