2016-12-25 6 views
0

신속한 사용 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) {