【问题标题】:Optional Types in Swift AVCaptureDeviceSwift AVCaptureDevice 中的可选类型
【发布时间】:2018-05-12 02:53:37
【问题描述】:
let captureDeviceInput: AVCaptureDeviceInput?

    do {
        captureDeviceInput = try AVCaptureDeviceInput(device: device)
        if session.canAddInput(captureDeviceInput) {
            session.addInput(captureDeviceInput)
        }
    
    } 

出现编译错误:
“可选类型 'AVCaptureDeviceInput?' 的值未打开”

有什么办法可以解决这个问题?

【问题讨论】:

  • captureDeviceInput 是可选的,您需要先打开它,然后才能在您的canAddInput 方法中使用它。
  • 请阅读 Swift 书中关于Optionals 的部分(以及本书的其余部分)。

标签: swift avcapturesession avcapturedevice avcapture


【解决方案1】:

试试这个:

import Cocoa
import AVFoundation

var captureDeviceInput: AVCaptureDeviceInput!
var device: AVCaptureDevice!
var session: AVCaptureSession!

do {
    captureDeviceInput = try AVCaptureDeviceInput(device: device)
    if ((session?.canAddInput(captureDeviceInput)) != nil) {
        session?.addInput(captureDeviceInput)
    }
}

【讨论】:

    【解决方案2】:

    有什么方法可以解决这个问题?

    是的。该属性是可选类型。你需要打开它。

    captureDeviceInput = try AVCaptureDeviceInput(device: device)
    if let captureDeviceInput = captureDeviceInput
    {
        if session.canAddInput(captureDeviceInput) {
                session.addInput(captureDeviceInput)
        }
    }
    else 
    {
        // Do something for a nil result (or nothing, if reasonable)
    }
    

    【讨论】:

      猜你喜欢
      • 2019-01-12
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多