can';t在Swift中从警报视图打开QR url

can';t在Swift中从警报视图打开QR url,swift,uialertview,qr-code,nsurl,func,Swift,Uialertview,Qr Code,Nsurl,Func,我正试图用Swift打开QR的URL,但我无法用代码打开。我尝试使用此func代码: func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) { if metadataObjects == nil || metadataObject

我正试图用Swift打开QR的URL,但我无法用代码打开。我尝试使用此func代码:

func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) {

    if metadataObjects == nil || metadataObjects.count == 0 {
        vwQRCode?.frame = CGRectZero
        return
    }

    let objMetadataMachineReadableCodeObject = metadataObjects[0] as! AVMetadataMachineReadableCodeObject

    if objMetadataMachineReadableCodeObject.type == AVMetadataObjectTypeQRCode {
        let objBarCode = objCaptureVideoPreviewLayer?.transformedMetadataObjectForMetadataObject(objMetadataMachineReadableCodeObject as AVMetadataMachineReadableCodeObject) as! AVMetadataMachineReadableCodeObject
        vwQRCode?.frame = objBarCode.bounds;

        if objMetadataMachineReadableCodeObject.stringValue != nil {
            let alert = UIAlertController(title: "Se ha detectado QR", message: objMetadataMachineReadableCodeObject.stringValue, preferredStyle: UIAlertControllerStyle.Alert)
            alert.addAction(UIAlertAction(title: "Abrir Link", style: UIAlertActionStyle.Default, handler: //nil))

                {action in

                    //UIApplication.sharedApplication().openURL(NSURL(string: "http://www.google.cl")!)
                    UIApplication.sharedApplication().openURL(NSURL(fileURLWithPath: objMetadataMachineReadableCodeObject.stringValue))
            }))

            alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
            self.presentViewController(alert, animated: true, completion: nil)
        }
    }
}
但是当我在alertView中单击按钮时,什么也不做。 然后,我尝试了谷歌网址和开放没有问题。
请有人帮帮我

由于系统无法处理生成的URL,因此不会发生任何事情。您应该在执行以下操作之前检查此功能:

let url = NSURL(fileURLWithPath: objMetadataMachineReadableCodeObject.stringValue)
if UIApplication.sharedApplication().canOpenURL(url) {
   UIApplication.sharedApplication().openURL(url)
}

您的二维码是否真的指向文件URL或web链接?

您的二维码似乎工作正常。试着做一个简单的练习:

print(objMetadataMachineReadableCodeObject.stringValue)
看看结果会是什么,因为它表明这就是你的问题所在。您的二维码可能包含一些引号?

好的。我终于做到了。 我只是将“fileURLWithPath”更改为“string”

以前

UIApplication.sharedApplication().openURL(NSURL(fileURLWithPath: objMetadataMachineReadableCodeObject.stringValue))
之后

现在,iOS10中的Swift3不推荐使用openURL,但如果您将“openURL”更改为“open”,则效果会非常好

UIApplication.sharedApplication().open(NSURL(string: objMetadataMachineReadableCodeObject.stringValue)!)

我尝试你的代码,但做同样的事情。二维码不包含引号。
UIApplication.sharedApplication().open(NSURL(string: objMetadataMachineReadableCodeObject.stringValue)!)