实例化AVCaptureDeviceInput时出错

时间:2018-02-03 15:06:42

标签: ios swift avcapturedevice

我正在使用具有不同视图的底栏构建应用。 由左下角按钮打开的RSS提要视图和从右下角按钮打开的自定义相机。 通过编译应用程序并在模拟器中运行它,当我点击相机按钮时,应用程序冻结并在线上

let captureDeviceInput = try AVCaptureDeviceInput(device: captureDevice)

Xcode显示以下错误:

  

线程1:致命错误:在展开时出乎意料地发现nil   可选值。

这是功能:

 func beginSession () {
        do {
            let captureDeviceInput = try AVCaptureDeviceInput(device: captureDevice)

            captureSession.addInput(captureDeviceInput)

        }catch {
            print(error.localizedDescription)
        }

我该如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:0)

由于captureDevice被定义为隐式解包的可选项,除非您在第一次访问它之前实际为其指定了非nil值,否则您将收到运行时错误。你不应该使用隐式解包的选项,除非你有充分的理由这样做。

您应该只将captureDevice定义为非可选项并为其指定值。您可以根据具体用例调整输入参数或使用AVCaptureDevice的其他初始化程序。

let captureDevice = AVCaptureDevice.default(for: .video)

func beginSession(){
    do {
        guard let captureDevice = captureDevice else {return}
        let captureDeviceInput = try AVCaptureDeviceInput(device: captureDevice)
        captureSession.addInput(captureDeviceInput)
    }catch {
        print(error.localizedDescription)
    }
}