我在iOS 16上使用
我将代码分离到playground中,并在此处遇到相同的问题。在Xcode 13.4.1的playground上运行下面的代码,我得到以下结果:
另外,也没有抛出任何异常。
有人经历过相同的问题并成功解决吗?
这是我的playground代码:
VNDetectBarcodesRequest
遇到了问题。我的代码在iOS 15上正常工作,但在iOS 16上无法在图像中找到任何条形码。我将代码分离到playground中,并在此处遇到相同的问题。在Xcode 13.4.1的playground上运行下面的代码,我得到以下结果:
在Xcode 14上运行相同的代码时,我得到一个"Google link: Optional("https://www.google.com")"
nil
结果。在带有Xcode 14的iOS 15模拟器中运行此代码会得到一个肯定的结果,但仅在iOS 16和playground中才无法读取QR码。另外,也没有抛出任何异常。
有人经历过相同的问题并成功解决吗?
这是我的playground代码:
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")
}