线程1:致命错误:展开一个Optional值时意外发现nil。从图库快速获取图像

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

我试图通过按钮从图库中获取图像,但出现此错误:

线程1:致命错误:展开包装时意外发现nil可选值。

我看过所有其他的问题与我的相似,但由于某种原因,我无法解决我的问题问题。

class ViewController: UIViewController, VNDocumentCameraViewControllerDelegate,  UINavigationControllerDelegate, UIImagePickerControllerDelegate  {

    var textRecognitionRequest = VNRecognizeTextRequest()
    var recognizedText = ""
    var text2 = "";

    @IBOutlet weak var imageTest: UIImageView!
    @IBOutlet weak var centreView: CardView!
    @IBOutlet weak var centreViewBorder: UIView!
    @IBOutlet weak var circleButton: UIButton!



    override func viewDidLoad() {
        super.viewDidLoad()
        imageTest = UIImageView()
```

```
IBAction func uploadImage(_ sender: UIButton) {
        let imagePicker = UIImagePickerController()
        imagePicker.delegate = self
        imagePicker.sourceType = .photoLibrary
        self.present(imagePicker, animated: true, completion: nil)

    }
   func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        guard let image = info[.originalImage] as? UIImage else {
            fatalError("Error")
        }
        imageTest!.image = image
    dismiss(animated: true, completion: nil)

    }
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    dismiss(animated: true, completion: nil)
}


ios swift xcode image-processing uiimageview
1个回答
1
投票

第一个问题是您将imageTest变量切换到UIImageView的另一个实例。请记住,在声明IBOutlet并使用!时。您变量的内存指针引用内存中的nil值。您不再需要再次分配它。此外,将来在引用它时,将不再需要将其拆开,因为!在声明中使力量解开是明确的。

override func viewDidLoad() {
        super.viewDidLoad()
        imageTest = UIImageView()  -- ***** Remove this line *****

也需要更改

   func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        guard let image = info[.originalImage] as? UIImage else {
            fatalError("Error")
        }
        imageTest!.image = image -- ******* REMOVE THE BANG HERE ******
    dismiss(animated: true, completion: nil)

    }
© www.soinside.com 2019 - 2024. All rights reserved.