Swift3 我能';Don’我好像没有定做照相机&引用;初始化前使用的常数";

Swift3 我能';Don’我好像没有定做照相机&引用;初始化前使用的常数";,swift3,constants,avcapturesession,Swift3,Constants,Avcapturesession,我用的是swift 3。我在试着做一个定制相机。但无论我遵循多少教程,或苹果的许多文档,总有一个错误 class ViewController: UIViewController, UIImagePickerControllerDelegate { @IBOutlet var cameraView: UIView! var captureSession : AVCaptureSession? var stillImageOutput : AVCaptureStillImageOutput?

我用的是swift 3。我在试着做一个定制相机。但无论我遵循多少教程,或苹果的许多文档,总有一个错误

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
}

在这一行,
如果(error==nil&&captureSession?.canAddInput(input)!=nil){
,则出现一个错误,表示常量“error”已在初始化之前使用过。我不太明白这一点。请提前感谢。

正如错误消息所述,您在初始化之前正在使用
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) {