Дополнительные типы в Swift AVCaptureDevice

let captureDeviceInput: AVCaptureDeviceInput?

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

Получение ошибки компиляции:
Значение необязательного типа 'AVCaptureDeviceInput?' не развернуто.

Любые способы исправить это?


person tchen2    schedule 28.11.2017    source источник
comment
captureDeviceInput является необязательным, вам нужно развернуть его, прежде чем вы сможете использовать его в своем методе canAddInput.   -  person Marco Pace    schedule 28.11.2017
comment
Прочтите раздел Необязательно в книге Swift (и в остальной части книги тоже).   -  person rmaddy    schedule 28.11.2017


Ответы (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)
}
person JeremyP    schedule 28.11.2017

Попробуй это:

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)
    }
}
person Andy Fedoroff    schedule 28.11.2017