无法使用类型为“(设备: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”的初始化程序的主要内容,如果未能解决你的问题,请参考以下文章

无法使用类型为“”的参数列表调用类型“”的初始化程序

无法使用类型为 '(Codable.Type?

Constraint 无法解析为类型

无法使用类型为“(UInt32)”的参数列表调用类型“CGBitmapInfo”的初始化程序

无法使用“Any?”类型的索引为“[AnyHashable:Any]”类型的值下标

无法使用“Int”类型的索引为“[String : String]”类型的值下标