Желтое предупреждение: условное приведение от 'AVCaptureVideoPreviewLayer' к 'AVCaptureVideoPreviewLayer' всегда завершается успешно - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть этот бит кода, и он выдает жёлтое предупреждение. Я не могу понять, как его закодировать, чтобы жёлтое предупреждение исчезло. Попытка очистить мой код после конвертации из Swift-2 -> 3 -> 4.

if let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) as? AVCaptureVideoPreviewLayer {
    previewLayer.bounds = imageView.bounds
    previewLayer.position = CGPoint(x: 140, y: 140)
    previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
    imageView.layer.addSublayer(previewLayer)
    view.addSubview(imageView)    
}

Удаление as? AVCaptureVideoPreviewLayer показывает ошибку:

Инициализатор для условного связывания должен иметь необязательный тип, а не 'AVCaptureVideoPreviewLayer'

1 Ответ

0 голосов
/ 01 сентября 2018

AVCaptureVideoPreviewLayer(session: captureSession) всегда возвращает объект типа AVCaptureVideoPreviewLayer, а не типа AVCaptureVideoPreviewLayer? (т. Е. Возвращаемый объект не является необязательным и поэтому не может иметь значение nil).

Когда вы делаете if let, Swift ожидает необязательный тип. Поскольку необязательный тип не создается, возникает ошибка.

Я предлагаю удалить часть if и просто иметь

let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer.bounds = imageView.bounds
previewLayer.position = CGPoint(x: 140, y: 140)
previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
imageView.layer.addSublayer(previewLayer)
view.addSubview(imageView) 

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...