gpt4 book ai didi

ios - Swift iOS 9 二维码扫描仪

转载 作者:行者123 更新时间:2023-11-30 13:56:52 32 4
gpt4 key购买 nike

我正在使用 swift 开发 QR 扫描仪,它应该打开一个 URL 并将 QR 数据解析到 URL 中,然后再加载到新制作的 Web View 中。

为此,我使用 URL 和获取数据创建了一个字符串,但添加了扫描的数据。

在不使用该功能的情况下进行扫描时,数据会毫无问题地解析为标签“lblQRCodeResult”,但是在尝试打开加载地址的 Web View 时,应用程序会崩溃。

有什么建议吗?

我的代码目前如下所示:

func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) {
if metadataObjects == nil || metadataObjects.count == 0 {
vwQRCode?.frame = CGRectZero
lblQRCodeResult.text = "NO QRCode text detacted"
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 newString = "http://192.168.2.1/qr.php?type=buy&prod=" + objMetadataMachineReadableCodeObject.stringValue;
lblQRCodeResult.text = newString

let webV:UIWebView = UIWebView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height))
webV.loadRequest(NSURLRequest(URL: NSURL(string: newString)!))
webV.delegate = self;
self.view.addSubview(webV)
}
}
}

最佳答案

当您尝试获取 objBarCode 时,您将该变量强制转换为显式解包的 AVMetadataMachineReadableCodeObject,从而保证它始终存在。但是,您的 objCaptureVideoPreviewLayer 是可选的,转换函数可以返回 nil 对象,如文档中所述。

如果没有错误消息,很难说,但请检查 objBarCodeNSURL 是否都有效。

关于ios - Swift iOS 9 二维码扫描仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33525036/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com