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