【问题标题】:Error Handling with Swift 2Swift 2 的错误处理
【发布时间】:2015-10-29 00:01:33
【问题描述】:

我的代码似乎存在错误处理问题:

var err : NSError? = nil

captureSession.addInput(AVCaptureDeviceInput(device: captureDevice, error: &err))

if err != nil {
    print("error: \(err?.localizedDescription)")
}

我在 captureSession 行上不断收到以下错误:

无法使用类型为“(设备:AVCaptureDevice?,错误:inout NSError?)”的参数列表调用类型“AVCaptureDeviceInput”的初始化程序

我尝试使用此方法解决问题:

let err : NSError?

do {
    err = try captureSession.addInput(AVCaptureDeviceInput(device: captureDevice))
} catch _ {
    err = nil
}

但我在 do-catch 语句的第一行遇到了另一个错误:

无法将“Void”(又名“()”)类型的值分配给“NSError”类型的值?

知道可能出了什么问题吗?谢谢

【问题讨论】:

    标签: ios swift2


    【解决方案1】:

    因此,您可以选择try! AVCaptureDeviceInput(device: someDevice),这意味着您“承诺”它不会失败(如果失败,将会崩溃)。或者你可以尝试/捕捉

    do {
        try AVCaptureDeviceInput(device: someDevice)
    } catch let error as NSError {
        print(error)
    }
    

    【讨论】:

      【解决方案2】:

      // 更新 swift3 这就是我们在 swift3 上处理它的方式

              var input = AVCaptureDeviceInput()
              do {
                    input = try AVCaptureDeviceInput(device: device)
                    self.captureSession.addInput(input) 
                 }
              catch {
                    //  error
                 }
      

      【讨论】:

      • 如果您想要更优化的解决方案,您可以删除第一行。目的是展示如何处理 swift3 中 AVCaptureDeviceInput 抛出的错误。
      猜你喜欢
      • 2015-09-06
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      相关资源
      最近更新 更多