Swift 黄色警告:从';AVCaptureVideoPreviewLayer';至';AVCaptureVideoPreviewLayer';总是成功

Swift 黄色警告:从';AVCaptureVideoPreviewLayer';至';AVCaptureVideoPreviewLayer';总是成功,swift,xcode,camera,Swift,Xcode,Camera,我有这段代码,它发出黄色警告。我不知道如何编码,所以黄色警告消失了。尝试在从Swift-2->3->4转换后清理我的代码 if let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) as? AVCaptureVideoPreviewLayer { previewLayer.bounds = imageView.bounds previewLayer.position = CGPoint(x:

我有这段代码,它发出黄色警告。我不知道如何编码,所以黄色警告消失了。尝试在从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”


AVCaptureVideoPreviewLayer(会话:captureSession)
始终返回类型为
AVCaptureVideoPreviewLayer
的对象,而不是类型为
AVCaptureVideoPreviewLayer?
(即返回的对象不是可选对象,因此不能为零)

当您执行
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) 

希望这有帮助

只需删除条件强制转换。
let previewLayer=AVCaptureVideoPreviewLayer(会话:captureSession)
AVCaptureVideoPreviewLayer(会话:)initializer它是不会出错的,从AVCaptureVideoPreviewLayer到AVCaptureVideoPreviewLayer的强制转换是毫无意义的