无法使用类型为“(设备:AVCaptureDevice!,错误:inout NSError?)”的参数列表调用类型“AVCaptureDeviceInput”的初始化程序
Posted
技术标签:
【中文标题】无法使用类型为“(设备:AVCaptureDevice!,错误:inout NSError?)”的参数列表调用类型“AVCaptureDeviceInput”的初始化程序【英文标题】:Cannot invoke initializer for type 'AVCaptureDeviceInput' with an argument list of type '(device: AVCaptureDevice!, error: inout NSError?)' 【发布时间】:2016-05-29 20:36:21 【问题描述】:我在一个旧的 swift 教程中的代码中遵循这个,所以可能有一个我在 Swift 2 中没有意识到如何处理错误的变化,但这是我的代码
backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
var error : NSError?
var input = AVCaptureDeviceInput(device: backCamera, error: &error)
我不明白为什么会出现标题中的错误,它会突出显示输入变量。
【问题讨论】:
【参考方案1】:这已被弃用。使用这个:
var input = AVCaptureDeviceInput()
do
input = try AVCaptureDeviceInput(backCamera)
catch
//error
【讨论】:
我认为它跳过了“已弃用”并直接进入“过时”。 :)【参考方案2】:查看一些 Swift 2 文档。构造函数是使用单个device:
参数和throws
注释而不是error:
定义的。
【讨论】:
【参考方案3】:更新 swift3 这就是我们如何处理 swift3 上的 AVCaptureDeviceInput 错误
var input = AVCaptureDeviceInput()
do
input = try AVCaptureDeviceInput(device: device)
catch
// error
【讨论】:
以上是关于无法使用类型为“(设备:AVCaptureDevice!,错误:inout NSError?)”的参数列表调用类型“AVCaptureDeviceInput”的初始化程序的主要内容,如果未能解决你的问题,请参考以下文章
无法使用类型为“(UInt32)”的参数列表调用类型“CGBitmapInfo”的初始化程序