【问题标题】:How to add input device for capturesession in Swift2 and Xcode7 beta?如何在 Swift2 和 Xcode7 beta 中为 capturesession 添加输入设备?
【发布时间】:2015-09-30 23:26:30
【问题描述】:

我正在按照本教程制作相机应用程序,但本教程是用 Swift 编写的,我使用的是 Xcode 7 beta 和 Swift2。

http://jamesonquave.com/blog/taking-control-of-the-iphone-camera-in-ios-8-with-swift-part-1/

听说现在Swift2有不同的错误处理方法,所以我想这部分代码需要改一下。但我不确定如何。谁能帮我这个?谢谢!

var err : NSError? = nil
        captureSession.addInput(AVCaptureDeviceInput(device: captureDevice, error: &err))

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

【问题讨论】:

标签: ios avfoundation device avcapturesession swift2


【解决方案1】:

新的 Swift 错误处理说明 - Error-Handling in Swift-Language

let captureSession = AVCaptureSession()
let captureDevice: AVCaptureDevice
do {
    let input = try AVCaptureDeviceInput(device: captureDevice)
    captureSession.addInput(input)
}

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
【解决方案2】:

为了使您发布的代码符合 swift 2 中新的错误处理要求,您需要将代码行替换为以下内容:

var err : NSError? = nil
do {
    let input = try AVCaptureDeviceInput(device: captureDevice)
    captureSession.addInput(input)
} catch _ {
    print("error: \(err?.localizedDescription)")
}

此更改的原因是 Apple 更改了您处理错误所需的方式,以使编码更不容易出错。现在您需要为任何将引发错误的调用创建一个 do catch 语句。可能抛出和错误的调用需要在 do 语句中,错误处理需要在 catch 语句中找到。以下链接中有关此更改原因的更多详细信息:

https://www.hackingwithswift.com/new-syntax-swift-2-error-handling-try-catch

【讨论】:

  • 您能否让提问者更清楚实际答案是什么以及为什么该答案有效?
  • 当然,作为网站的新手,我应该编辑现有答案还是将修订作为评论?感谢您的建议!
  • 只需编辑现有的答案,你应该会很好。很高兴您为该网站做出贡献!
  • Rob,这对社区来说是一个不可思议的资源。我很高兴回馈!让我知道我的编辑是否更直接,并提供足够的解释。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-08
  • 2016-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多