从Swift中的按钮操作打开URL

时间:2016-01-14 09:15:34

标签: ios swift

在我的应用程序中,我正在从parse.com对象中检索URL。

我想打开设备的浏览器,并在用户点击按钮时显示从Parse收到的网址。

这是行动:

  @IBAction func botonNuevos(sender: AnyObject) {

        let query = PFQuery(className: "datos_contacto")
        query.getObjectInBackgroundWithId("H52ZxGm3U8", block: {
            (questionObject: PFObject?, error: NSError?) -> Void in

            let webNuevos: AnyObject! = questionObject!.valueForKey("dato_contacto")

            print(webNuevos) //= http://www.touchemotors.com

            if let webCallURL = NSURL(string: webNuevos as! String ) {
                let application = UIApplication.sharedApplication()
                if application.canOpenURL(webCallURL) {
                    application.openURL(webCallURL)
                }
                else{
                    print("failed")
                }
            }


        })
    }

单击该按钮时,日志显示收到的URL,但未启动浏览器并显示任何错误。

请告诉我的代码有什么问题。谢谢

1 个答案:

答案 0 :(得分:1)

<强>更新

最后在与OP讨论后,结果questionObject!.objectForKey("dato_contacto")返回的值在末尾有空格,因此NSUrl(string:)没有很好地解析它。

<强>更新

您使用了错误的方法NSObject.valueForKey()。请改用PFObject.objectForKey()

适用于iOS 9

来自here

  

如果您的应用在iOS 9.0上或之后进行了关联,则必须声明该网址   您想要传递给此方法的方案。这样做是通过使用   Xcode项目的Info.plist中的LSApplicationQueriesSchemes数组   文件。对于您希望应用与此方法一起使用的每种网址方案,   将其添加为此数组中的字符串。

     

如果您的(iOS 9.0或更高版本)应用使用您的方案调用此方法   没有声明,该方法返回false,无论是否   该方案的相应应用程序已安装在设备上。

http方案添加到LSApplicationQueriesSchemes中的Info.plist数组。