【问题标题】:Initializer for conditional binding must have Optional type, not 'AVCaptureVideoPreviewLayer'条件绑定的初始化程序必须具有可选类型,而不是“AVCaptureVideoPreviewLayer”
【发布时间】:2018-03-25 05:28:21
【问题描述】:

迁移到 swift 4 后出现 2 个错误。

第一个错误:

条件绑定的初始化器必须是 Optional 类型,而不是 AVCaptureVideoPreviewLayer。

第二个错误:

条件绑定的初始化器必须是 Optional 类型,而不是 [AVCaptureDevice]。

我应该如何纠正这些错误?

谢谢

【问题讨论】:

    标签: ios iphone xcode9 swift4


    【解决方案1】:

    我认为您只需删除 if let ... 条件并进行更改

    喜欢简单的

    let cameraLayer = AVCaptureVideoPreviewLayer(session: self.cameraSession)
    

    同样的第二个错误意味着你应该直接使用videoDevices,不需要使用if let...条件。

    【讨论】:

    • 如果我在写 let cameraLayer = AVCaptureVideoPreviewLayer(session: self.cameraSession) 然后我得到错误:无法使用类型为 '(session: AVCaptureSession, () -> ())'
    【解决方案2】:

    AVCaptureVideoPreviewLayer 的初始化器不返回可选项。因此,if 条件始终为真,if 语句毫无用处。您应该删除 if 和它的大括号。

    【讨论】:

      猜你喜欢
      • 2019-03-11
      • 2017-01-22
      • 2016-01-08
      • 2017-04-08
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      相关资源
      最近更新 更多