Ios 如何使用Swift 3拨打电话?

Ios 如何使用Swift 3拨打电话?,ios,swift3,Ios,Swift3,我正在为一家企业开发一款应用程序,但我已经陷入了死胡同。我需要一个按钮,可以启动一个电话到客户的手机号码 我有这个,这是它在Swift 2中应该如何工作的: @IBAction func clientMobile(_ sender: AnyObject) { UIApplication.shared.openURL(self.mobile!) } 然而,openURL已被弃用,我在intellisense中看不到任何替代方案。Swift 3与上述代码行的等价物是什么 还有一件事,当我运

我正在为一家企业开发一款应用程序,但我已经陷入了死胡同。我需要一个按钮,可以启动一个电话到客户的手机号码

我有这个,这是它在Swift 2中应该如何工作的:

@IBAction func clientMobile(_ sender: AnyObject) {
    UIApplication.shared.openURL(self.mobile!)
}
然而,openURL已被弃用,我在intellisense中看不到任何替代方案。Swift 3与上述代码行的等价物是什么

还有一件事,当我运行此代码时,我有以下错误:

 fatal error: unexpectedly found nil while unwrapping an Optional value
我知道错误与self.mobile有关,但我不确定如何修复它

声明和额外信息:
self.mobile
声明和初始化如下:

var mobile : URL?
//inside view will appear
self.mobile = URL(string: "telprompt://" + (self.dog?.client?.mobile)!)
在iOS 10中不推荐使用

新方法是:

- (void)openURL:(NSURL*)url options:(NSDictionary<NSString *, id> *)options

(希望这有帮助,为移动atm上的任何错误感到抱歉)

从外观上看,您应该检查电话号码中的一些无效字符,甚至是零(我无法判断移动是否真的是可选的,如果是,您应该在尝试启动呼叫之前检查零)

看起来您的
URL
返回为nil,您正试图将其传递给您的
openURL


您的电话号码应该没有符号,例如
()+-
。使用
stringByReplacingCharactersInSet
(现在无法记住Swift 3中的确切名称。

使用
“电话:/”可以轻松删除这些字符+…
有什么不同吗?只是一个建议-我没有使用Swift 3nope…我很确定错误是我试图从客户端获取手机号码…我只是不知道如何公平地修复它,我的道歉-忽略我XD你验证过
self.mobile
不是零吗?你有一个错误的URL。你真的不需要o避免使用
强制展开。正确展开选项并避免做出假设。
@可用(iOS 10.0,*)
在Swift中可能是比调用
-响应选择器(…)
更优雅的解决方案。
you much check iOS version
guard let number = URL(string: "telprompt://123456789") else { return }
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(number)
    } else {
        // Fallback on earlier versions
        UIApplication.shared.openURL(number)
    }
you much check iOS version
guard let number = URL(string: "telprompt://123456789") else { return }
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(number)
    } else {
        // Fallback on earlier versions
        UIApplication.shared.openURL(number)
    }