如何避免UIImageView中的Optional nil错误?

我在尝试创建一个分类应用,但这个UIImageView不断产生Optional nil错误。我不确定如何修复这个问题,非常希望能得到一些支持。谢谢。

我可以使用一个图标或类似的东西,但不知为何我一直无法成功避免这个错误。

import UIKitimport AVKitimport Visionclass FirstViewController: UIViewController, UIImagePickerControllerDelegate,UINavigationControllerDelegate {    @IBOutlet weak var myImg: UIImageView!    @IBOutlet weak var Label: UILabel!        //let imageCG = CGImag    override func viewDidLoad() {        super.viewDidLoad()        detectImageContent()    }    func detectImageContent() {        Label.text = "思考中..."        guard let model = try? VNCoreMLModel(for: Resnet50Int8LUT().model) else {return}        // 创建一个视觉请求        let request = VNCoreMLRequest(model: model) {[weak self] request, error in            guard let results = request.results as? [VNClassificationObservation], let topResult = results.first                else {                    fatalError("意外错误")            }            DispatchQueue.main.async { [weak self] in                self?.Label.text = "\(topResult.identifier) 的置信度为 \(Int(topResult.confidence)*100) %"            }        }            // 下面这一行有Optional错误!            guard let ciImage = CIImage(image: self.myImg.image!) else { return}            // 运行GoogleNet Places分类器                    let handler = VNImageRequestHandler(ciImage: ciImage)                    DispatchQueue.global().async {                        do {                            try handler.perform([request])                        } catch {                            print(error)                        }                    }            }    @IBAction func takePhoto(_ sender: Any) {        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.camera) {        let imagePicker = UIImagePickerController()        imagePicker.delegate = self        imagePicker.sourceType = UIImagePickerController.SourceType.camera        imagePicker.allowsEditing = false        self.present(imagePicker,animated: true, completion: nil)        }    }    @IBAction func savedPhoto(_ sender: Any) {        if UIImagePickerController.isSourceTypeAvailable(.savedPhotosAlbum){            let imagePicker = UIImagePickerController()            imagePicker.delegate = self            imagePicker.sourceType = .savedPhotosAlbum            imagePicker.allowsEditing = false            present(imagePicker, animated: true, completion: nil)        }    }    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {        if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {            myImg.contentMode = .scaleToFill            myImg.image = pickedImage        }        picker.dismiss(animated: true, completion: nil)        detectImageContent()    }}

回答:

通过将强制解包(!)替换为安全解包,就像你在ciImageguard let声明中所做的那样来修复这个问题。因此,要修复你的问题,请将以下内容替换为:

guard let ciImage = CIImage(image: self.myImg.image!) else { return}

替换为:

guard let image = self.myImg.image, let ciImage = CIImage(image: image) else { return }

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注