有谁能解释一下我为什么在这段代码中出错
我的代码从来没有到打印语句,上面写着“视频预览层作为子层添加”。我不知道这是为什么。视频预览层显然是在手边创建的,然后发送到相机视图的子层。我的应用程序是基于页面的应用程序。这是我的第二种观点。我的根视图控制器现在是空白的,我只是想确保我的相机的过渡是无缝的。当相机是我的应用程序的第一页,或者只有一个视图控制器时,一切都可以工作。但不知为什么,它告诉我有一个未包装的零

/* 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")
        }


    }

最佳答案

问题是,您在cameraView为零时运行此代码。你得问问自己为什么。如果cameraView是一个@IBOutlet,则可能会发生这种情况,例如,如果您从该视图控制器外部调用startSession,则此时视图控制器正在创建,但尚未调用其自身的viewDidLoad(在调用viewDidLoad之前不会连接出口连接)。

关于ios - 非常意外的未包装零值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29762873/

10-10 20:37