Ios 使用Swift 2处理错误
我对他的代码有一个错误处理问题:Ios 使用Swift 2处理错误,ios,swift2,Ios,Swift2,我对他的代码有一个错误处理问题: var err : NSError? = nil captureSession.addInput(AVCaptureDeviceInput(device: captureDevice, error: &err)) if err != nil { print("error: \(err?.localizedDescription)") } 我在captureSession行中不断遇到以下错误: 无法使用类型为“”的参数列表调用类型为“”的AV
var err : NSError? = nil
captureSession.addInput(AVCaptureDeviceInput(device: captureDevice, error: &err))
if err != nil {
print("error: \(err?.localizedDescription)")
}
我在captureSession行中不断遇到以下错误:
无法使用类型为“”的参数列表调用类型为“”的AVCaptureDeviceInput“”的初始值设定项(设备:AVCaptureDevice?,错误:inout NSError?)
我尝试使用以下方法解决此问题:
let err : NSError?
do {
err = try captureSession.addInput(AVCaptureDeviceInput(device: captureDevice))
} catch _ {
err = nil
}
但是,我在do catch语句的第一行遇到了另一个错误:
无法将“Void”(又名“()”)类型的值分配给“NSError”类型的值
知道哪里出了问题吗?谢谢
AVCaptureDeviceInput
有一个名为init(device:)
的初始值设定项,如果无法初始化,它会抛出一个外部错误
所以你可以做试试!AVCaptureDeviceInput(device:someDevice)
这意味着您“承诺”它不会失败(如果失败就会崩溃)。或者你可以试试看
do {
try AVCaptureDeviceInput(device: someDevice)
} catch let error as NSError {
print(error)
}
AVCaptureDeviceInput
有一个名为init(device:)
的初始值设定项,如果无法初始化,则会抛出一个外部错误
所以你可以做试试!AVCaptureDeviceInput(device:someDevice)
这意味着您“承诺”它不会失败(如果失败就会崩溃)。或者你可以试试看
do {
try AVCaptureDeviceInput(device: someDevice)
} catch let error as NSError {
print(error)
}
//更新swift3
这就是我们在swift3上的处理方式
var input = AVCaptureDeviceInput()
do {
input = try AVCaptureDeviceInput(device: device)
self.captureSession.addInput(input)
}
catch {
// error
}
//更新swift3
这就是我们在swift3上的处理方式
var input = AVCaptureDeviceInput()
do {
input = try AVCaptureDeviceInput(device: device)
self.captureSession.addInput(input)
}
catch {
// error
}
如果你想得到更好的解决方案,你可以删除第一行。目的是展示如何处理swift3中AVCaptureDeviceInput引发的错误。如果您想要更优化的解决方案,可以删除第一行。目的是展示如何处理swift3中AVCaptureDeviceInput抛出的错误。