在 swift 2.0 中构建自定义相机应用程序时出错
Errors while building a custom camera App in swift 2.0
我正在构建一个带有自定义相机视图的自定义相机应用程序。在 ViewWillAppear 部分添加以下代码后,我在添加星星的区域出现以下错误:
二元运算符“!=”不能应用于 'Bool' 和 'NilLiteralConvertible'
类型的操作数
非常感谢任何帮助。
captureSession = AVCaptureSession()
captureSession.sessionPreset = AVCaptureSessionPreset1920x1080
let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
var error : NSError?
var input: AVCaptureDeviceInput!
do {
input = try AVCaptureDeviceInput(device: backCamera)
} catch let error1 as NSError {
error = error1
input = nil
}
if error == nil && captureSession.canAddInput(input) != nil { *********
captureSession.addInput(input)
stillImageOutPut = AVCaptureStillImageOutput()
stillImageOutPut.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG]
if (captureSession.canAddOutput(stillImageOutPut) != nil){
captureSession.addOutput(stillImageOutPut)
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer.videoGravity = AVLayerVideoGravityResizeAspect
previewLayer.connection.videoOrientation = AVCaptureVideoOrientation.Portrait
cameraView.layer.addSublayer(previewLayer)
captureSession.startRunning()
}
}
captureSession.canAddInput(input)
returns一个Bool
,所以不用查!= nil
。你的 if 语句可以变成:
if error == nil && captureSession.canAddInput(input) {
此外,您将 input
声明为 AVCaptureDeviceInput!
。 !
意味着它永远不应该为 nil,但是如果出现错误,则将 nil 分配给它。如果出现错误,这将崩溃。您应该将 input
声明为 AVCaptureDeviceInput?
并在必要时展开 input
。
我正在构建一个带有自定义相机视图的自定义相机应用程序。在 ViewWillAppear 部分添加以下代码后,我在添加星星的区域出现以下错误: 二元运算符“!=”不能应用于 'Bool' 和 'NilLiteralConvertible'
类型的操作数非常感谢任何帮助。
captureSession = AVCaptureSession()
captureSession.sessionPreset = AVCaptureSessionPreset1920x1080
let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
var error : NSError?
var input: AVCaptureDeviceInput!
do {
input = try AVCaptureDeviceInput(device: backCamera)
} catch let error1 as NSError {
error = error1
input = nil
}
if error == nil && captureSession.canAddInput(input) != nil { *********
captureSession.addInput(input)
stillImageOutPut = AVCaptureStillImageOutput()
stillImageOutPut.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG]
if (captureSession.canAddOutput(stillImageOutPut) != nil){
captureSession.addOutput(stillImageOutPut)
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer.videoGravity = AVLayerVideoGravityResizeAspect
previewLayer.connection.videoOrientation = AVCaptureVideoOrientation.Portrait
cameraView.layer.addSublayer(previewLayer)
captureSession.startRunning()
}
}
captureSession.canAddInput(input)
returns一个Bool
,所以不用查!= nil
。你的 if 语句可以变成:
if error == nil && captureSession.canAddInput(input) {
此外,您将 input
声明为 AVCaptureDeviceInput!
。 !
意味着它永远不应该为 nil,但是如果出现错误,则将 nil 分配给它。如果出现错误,这将崩溃。您应该将 input
声明为 AVCaptureDeviceInput?
并在必要时展开 input
。