如何修复条形码扫描代码中的歧义错误[关闭]

问题描述 投票:0回答:0

我有一个相机代码,可以使用 Vision 检测 UPC 条形码。它在代码的一行上给我一个错误,上面写着: Type of expression is ambiguous without more context。那一行是这样的:

let barcodeRequest = VNDetectBarcodesRequest(completionHandler: { request, error in
。我不确定如何解决它。这是我创建条形码请求的全部代码。

import SwiftUI
import Vision

struct CameraDetail: UIViewControllerRepresentable {
    typealias UIViewControllerType = UIImagePickerController

    @Binding var image: UIImage?
    @Environment(\.presentationMode) var presentationMode

    func makeUIViewController(context: Context) -> UIImagePickerController {
        let picker = UIImagePickerController()
        picker.delegate = context.coordinator
        picker.sourceType = .camera
        return picker
    }

    func updateUIViewController(_ uiViewController: UIImagePickerController, context: Context) {
    }

    func makeCoordinator() -> Coordinator {
        Coordinator(parent: self)
    }

    class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
        let parent: CameraDetail

        init(parent: CameraDetail) {
            self.parent = parent
        }

        func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
            if let image = info[.editedImage] as? UIImage ?? info[.originalImage] as? UIImage {
                parent.image = image

                // convert the captured image to a CIImage
                let ciImage = CIImage(image: image)!

                // Create a barcode detection request
                let barcodeRequest = VNDetectBarcodesRequest(completionHandler: { request, error in
                    if let results = request.results as? [VNBarcodeObservation], let barcode = results.first?.payloadStringValue {
                        print("Detected barcode: \(barcode)")
                        let cameraView = CameraView(barcodeString: barcode)
                        parent.presentationMode.wrappedValue.dismiss()
                        if let navigationController = parent.presentationMode.wrappedValue.navigationController {
                            navigationController.pushViewController(UIHostingController(rootView: cameraView), animated: true)
                        } else {
                            print("Error: Parent view controller is not a navigation controller")
                        }
                    } else {
                        print("Error: Failed to detect UPC barcode.")
                        parent.presentationMode.wrappedValue.dismiss()
                    }
                })
                // Perform the barcode detection request
                let handler = VNImageRequestHandler(ciImage: ciImage)
                do {
                    try handler.perform([barcodeRequest])
                } catch {
                    print(error)
                    parent.presentationMode.wrappedValue.dismiss()
                }
            }

            parent.presentationMode.wrappedValue.dismiss()
        }

        func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
            parent.presentationMode.wrappedValue.dismiss()
        }
    }
} 

struct CameraDetail_Previews: PreviewProvider {
    static var previews: some View {
        CameraDetail(image: .constant(nil))
    }
}

我什至不确定这个错误是什么意思或如何修复它。我尝试指定请求和错误,但这并没有改变任何东西。我还尝试添加另一个支架、重新加载项目、清除我的构建缓存,但都没有用。

swift barcode-scanner apple-vision
© www.soinside.com 2019 - 2024. All rights reserved.