首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VNDetectBarcodesRequest不工作于iOS16

VNDetectBarcodesRequest不工作于iOS16
EN

Stack Overflow用户
提问于 2022-09-19 08:23:46
回答 2查看 176关注 0票数 0

我遇到了VNDetectBarcodesRequest在iOS 16上的问题。我的代码在iOS 15上工作,但在iOS 16上却没有在图像中找到任何条形码。

我已经将我的代码分离到一个操场上,并在这里经历了同样的问题。在Xcode 13.4.1的操场上运行下面的代码,我得到了结果:

谷歌链接:可选(“https://www.google.com"”)

在Xcode 14上运行相同的代码,我将得到一个nil结果。在带有Xcode 14的iOS15模拟器中运行这个程序会产生积极的结果,只有在iOS16和操场上,它才不会读取QR代码。

要添加它,也不引发任何异常。

有没有人经历过同样的情况,并设法解决了这个问题?

这是我的操场代码:

代码语言:javascript
复制
import UIKit
import Vision

extension UIImage {
    func qrCodeLink(completion: @escaping (String?) -> Void) {
        guard let ciImage = CIImage(image: self) else {
            completion(nil)
            return
        }
        let imageRequestHandler = VNImageRequestHandler(ciImage: ciImage,
                                                        orientation: .up,
                                                        options: [:])       
        let request = VNDetectBarcodesRequest { (request,error) in
            guard error == nil else {
                completion(nil)
                return
            }
            
            guard let observations = request.results as? [VNDetectedObjectObservation] else {
                completion(nil)
                return
            }
            
            let result = (observations.first as? VNBarcodeObservation)?.payloadStringValue
            completion(result)
        }
        try? imageRequestHandler.perform([request])
    }
}

if let google = UIImage(named: "google") {
    google.qrCodeLink { link in
        debugPrint("Google link: \(link)")
    }
} else {
    debugPrint("No google image")
}

在上面的代码中,我使用了这个图像,它仅仅是一个指向https://www.google.com的链接:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-19 16:59:58

在阐述@Peelen的解决方案时,为了确保解决方案只在需要的地方使用(Xcode 14 + iOS 16 +模拟器),我们使用了:

代码语言:javascript
复制
#if targetEnvironment(simulator) && compiler(>=5.7)
if #available(iOS 16, *) {
    request.revision = VNDetectBarcodesRequestRevision1
}
#endif
票数 1
EN

Stack Overflow用户

发布于 2022-09-19 08:53:24

我想我已经找到问题了。当在Xcode 14和iOS 16上运行请求时,请求修订版在VNDetectBarcodesRequestRevision3上运行(issn尚未在VNDetectBarcodesRequest页面上记录)。但是,使用VNDetectBarcodesRequestRevision1VNDetectBarcodesRequestRevision2是可行的。

在执行任务对我起作用之前添加以下内容:

代码语言:javascript
复制
request.revision = VNDetectBarcodesRequestRevision1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73770477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档