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