非常意外的无包装零值

时间:2015-04-21 04:24:26

标签: ios swift

任何人都可以向我解释为什么我在这段代码中收到错误 我的代码永远不会出现在打印语句中,"视频预览层被添加为子层"。我不知道为什么会这样。视频预览图层显然是在手工创建之后创建的,然后被发送到摄像机视图的子图层。我的应用程序是基于分页的应用程序。这是我的第二个观点。我的根视图控制器现在是空白的,我只是想确保过渡到我的相机是无缝的。当相机是我的应用程序中的第一页或只有一个视图控制器时,一切正常。但由于某种原因,它告诉我有一个未解开的零

/* Start The Capture Session */
    func startSession() {
        println("Now starting the session")
        println("About to add session inputs...")

        var error: NSError? = nil
        let videoCapture = AVCaptureDeviceInput(device: self.cameraCaptureDevice, error: &error)

        if error != nil {
            println("Error, failed to add camera Capture Device: \(error?.description)")
        }

        // add video input
        if self.session.canAddInput(videoCapture) {
            self.session.addInput(videoCapture)
        }
        println("Start configuring the capture")
        // config capture session
        if !session.running {
            // set JPEG output
            self.stillImageOutput = AVCaptureStillImageOutput()
            let outputSettings = [ AVVideoCodecKey : AVVideoCodecJPEG ]
            self.stillImageOutput!.outputSettings = outputSettings
            println("Successfully configured stillImageOutput")

            // add output to session
            println("Adding still image output to capture session")
            if self.session.canAddOutput(stillImageOutput) {
                self.session.addOutput(stillImageOutput)
            }
            println("Successfully added still image output")

            println("Displaying camera in UI")
            // display camera in UI
            videoPreviewLayer = AVCaptureVideoPreviewLayer(session: session)
            println("Video Preview Layer set")
            cameraView.layer.addSublayer(videoPreviewLayer)
            println("Video Preview Layer Added as sublayer")
            videoPreviewLayer!.frame = cameraView.layer.frame
            println("Video Preview frame set")
            videoPreviewLayer!.videoGravity = AVLayerVideoGravityResizeAspectFill
            println("Camera successully can display")

            // start camera
            self.session.startRunning()
            println("Capture Session initiated")
        }


    }

1 个答案:

答案 0 :(得分:2)

问题是您在cameraView为零时运行此代码。你需要问问自己为什么会这样。如果cameraView@IBOutlet,那么可能会发生这种情况,例如,如果您从视图控制器的外部调用startSession,那么在视图控制器上正在创建但尚未调用自己的viewDidLoad(在调用viewDidLoad之前,插座连接未连接)。