var input = AVCaptureDeviceInput(device: backCamera)
我得到的错误消息说可以抛出,但它没有标记'try'并且没有处理错误。
我也有这行代码
if ((error == nil && captureSession?.canAddInput(input)) != nil)
可选类型'Bool'不能用作布尔值;测试“!= nil”而不是。
自动修正已打开但是对于第二行,当我单击修复它时只重写相同的代码行并添加另一行“!= nil”。
答案 0 :(得分:2)
您收到的错误是
此调用可以抛出,但它没有标记为
try
,并且未处理错误。
因为您没有捕获可能抛出的异常。相反,你应该使用这个
var error: NSError?
do{
let input = try AVCaptureDeviceInput(device: backCamera)
}
catch let myError as NSError{
error = myError
}
第二个错误是因为captureSession?.canAddInput(input)
返回可选的Bool
值。要解决此问题,您应该使用(captureSession?.canAddInput(input) ?? false)
,这会有效地将nil
值转换为false
。
if(error == nil && (captureSession?.canAddInput(input) ?? false))
更好的方法是将其全部放在do-catch语句中
do{
let input = try AVCaptureDeviceInput(device: backCamera)
if((captureSession?.canAddInput(input) ?? false)){
//your code
}
}
catch var error as NSError{
//handle the NSError 'error'
}
答案 1 :(得分:0)
对于你的第一行,我相信你所要做的只是用
包围它do{
try //statement
}catch {
}
对于第二个声明,我认为编译器抱怨的原因是因为你试图评估一个类型Bool是否为nil,试着简单地用
(error == nil && captureSession?.canAddInput(input))