Si tenta di implementare il codice che consentirà di acquisire immagini dalla fotocamera frontale e quindi condividerle. Tuttavia, ogni volta che provo a "scattare una foto", il mio applicazione si blocca con seguente avviso: consoleErrore irreversibile quando si tenta di acquisire foto dalla fotocamera frontale utilizzando AVFoundation
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '*** -[AVCaptureStillImageOutput captureStillImageAsynchronouslyFromConnection:completionHandler:] - inconsistent state.'
*** First throw call stack:
(0x181b1ee38 0x181183f80 0x188265074 0x10003d578 0x10003d748 0x10003c380 0x10003c3d8 0x186ca0ad0 0x186ca0a4c 0x186c88740 0x186ca033c 0x186c58b0c 0x186c994f8 0x186c98af4 0x186c68f4c 0x186c67528 0x181ad5124 0x181ad4bb8 0x181ad28b8 0x1819fcd10 0x1832e4088 0x186cd1f70 0x100036880 0x18159a8b8)
libc++abi.dylib: terminating with uncaught exception of type NSException
sto postando il mio codice qui sotto:
import UIKit
import AVFoundation
class CameraSnapViewController: UIViewController {
let captureSession = AVCaptureSession()
let stillImageOutput = AVCaptureStillImageOutput()
let cameraPicker = UIImagePickerController()
override func viewDidLoad() {
super.viewDidLoad()
self.addPhotoCapturingFunctionality()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func cameraButtonPressed(sender: UIButton) {
self.takePhoto()
}
}
extension CameraSnapViewController {
func addPhotoCapturingFunctionality() {
guard let device = AVCaptureDevice.devices().filter({ $0.hasMediaType(AVMediaTypeVideo) && $0.position == .Front }).first as? AVCaptureDevice else { fatalError("No front facing camera found") }
do {
let input = try AVCaptureDeviceInput(device: device)
captureSession.addInput(input)
captureSession.sessionPreset = AVCaptureSessionPresetPhoto
stillImageOutput.outputSettings = [AVVideoCodecKey:AVVideoCodecJPEG]
if captureSession.canAddOutput(stillImageOutput) {
captureSession.addOutput(stillImageOutput)
}
} catch let error as NSError {
print(error)
}
}
func takePhoto() {
if let videoConnection = stillImageOutput.connectionWithMediaType(AVMediaTypeVideo) {
stillImageOutput.captureStillImageAsynchronouslyFromConnection(videoConnection) { (imageDataSampleBuffer, error) -> Void in
let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageDataSampleBuffer)
// TODO: Sharing
}
}
}
}
Come posso risolvere il problema?