我正在使用具有不同视图的底栏构建应用。 由左下角按钮打开的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)
}
我该如何解决这个问题?谢谢!
答案 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)
}
}