我似乎无法制作定制相机。 "Constant used before initialized"



我正在使用Swift 3.我正在尝试制作自定义相机。但是,无论我遵循多少个教程或许多Apple文档,总会有错误。

class ViewController: UIViewController, UIImagePickerControllerDelegate {
@IBOutlet var cameraView: UIView!
var captureSession : AVCaptureSession?
var stillImageOutput : AVCaptureStillImageOutput?
var previewLayer : AVCaptureVideoPreviewLayer?
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    captureSession = AVCaptureSession()
    captureSession?.sessionPreset = AVCaptureSessionPreset1920x1080
    let backCamera = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo)
    let error : NSError?
    do {
        let input = try! AVCaptureDeviceInput (device: backCamera)
        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()
            }
        }
    } catch {
    }
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    previewLayer?.frame = cameraView.bounds
}

在这条线上, if (error == nil && captureSession?.canAddInput(input) != nil) {,有一个错误,说在初始化之前已经使用了常数"错误"。我真的不明白这一点。预先感谢您。

作为错误消息指出,您在初始化之前使用error。您可以通过nil初始化它来解决此问题:

let error: NSError? = nil

甚至更好:

let error: Error? = nil

实际上,您永远不会使用error,因此您可以简单地将其删除:

...
//let error : NSError? delete this line
do {
    ...
    if (/* error == nil && delete this */captureSession?.canAddInput(input) != nil) {

相关内容

最新更新