2016-09-20 163 views
0

我已经使用Swift构建了一个简单的iOS应用程序,并试图创建一个允许用户拨打预配置号码的按钮。拨打电话

下面是我的代码目前已到位,这似乎我一直在关注,但Xcode是显示错误从文档正确:

Variable used within its own initial value'

是显示错误的线路时,我m试图调用UIApplication。

@IBAction func contact_number_button(_ sender: AnyObject) { 
    let contact_number = "XXXXXXXXXXXXXX" 
    let phoneURL = NSURL(string: "tel://\(contact_number)") { 
    UIApplication.sharedApplication().openURL(phoneURL) 
} 
+0

你在测试设备? –

+0

嗨,我还没有尝试过在模拟器中测试它,因为我读过的调用在模拟器中不起作用。现在,这只是XCode向我提供的错误。谢谢! –

回答

0

第二版有一个很好的做法,而不是:

@IBAction func contact_number_button(_ sender: AnyObject) { 
    let contact_number = "XXXXXXXXXXXXXX" 
    if let phoneURL = NSURL(string: "tel://\(contact_number)") { 
     UIApplication.sharedApplication().openURL(phoneURL) 
    } 
} 

版解开可选:

我相信您遇到的问题是打开的梅开二度,试试这个:

@IBAction func contact_number_button(_ sender: AnyObject) { 
    let contact_number = "XXXXXXXXXXXXXX" 
    let phoneURL = NSURL(string: "tel://\(contact_number)") 
    UIApplication.sharedApplication().openURL(phoneURL!) 
} 
+1

由于phoneURL是可选的,Nop youre代码将不会执行 –

+0

使用未包装的可选 – tonik12

+1

进行编辑如果强制展开,这是不正确的做法 –

1
if let phoneCallURL:NSURL = NSURL(string:"tel://\(contact_number)") { 
    let application:UIApplication = UIApplication.sharedApplication() 
if (application.canOpenURL(phoneCallURL)) { 
    application.openURL(phoneCallURL); 
    } 
} 
0

非常感谢你对所有您的帮助!

这里的所有答案都让我找到了解决方案。我想我已经选择了错误的一周开始教自己在Swift中编写代码并将它们编码在一起! XCode 8.0不断告诉我iOS10中的某些命令已被折旧,其中之一是openURL命令。以下是现在允许我使用iPhone 6S(iOS 10)拨打预配置号码的代码。 XCode仍然告诉我openURL的命令已经折旧了,但它正在工作。如果以下错误或有更好的方法,请随时纠正!非常感谢你!这是我的第一篇文章,您的支持令人惊叹!

               @IBAction func contact_number_button(_ sender: AnyObject) {   
    let contact_number = "XXXXXXXXXXXXXXX" 
    if let phoneURL = NSURL(string: "tel://\(contact_number)"){ 
    UIApplication.shared.openURL(phoneURL as URL) 

    } 
}