2016-12-25 18 views
0

我正在使用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 
} 
在這條線上

if (error == nil && captureSession?.canAddInput(input) != nil) {,有一個錯誤說,不斷的「錯誤」已被使用過初始化。我真的不明白這一點。先謝謝你。

回答

0

如錯誤消息所述,您在初始化之前使用的是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) {