前提・実現したいこと
MacApplicationで一定時間おきに写真を撮影し、指定場所に格納するプログラムを組んでいます。
こちらの質問を参考に進めていたのですが、
写真撮影部分を実装中に以下の実行時エラーが発生しました。
発生している問題・エラーメッセージ
RuntimeError
1Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
該当のソースコード
Swift
1import Cocoa 2import AVFoundation 3class ViewController: NSViewController{ 4 var myImageOutput: AVCaptureStillImageOutput! 5 var timer: Timer! 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 let mySession = AVCaptureSession() 9 mySession.sessionPreset = AVCaptureSession.Preset.high 10 var myCamera: AVCaptureDevice! 11 let devices = AVCaptureDevice.devices() 12 for device in devices { 13 if (device.position == AVCaptureDevice.Position.back) { 14 myCamera = device as! AVCaptureDevice 15 } 16 } 17 do { 18 let videoInput = try AVCaptureDeviceInput(device: myCamera) /********** この行で実行時エラー発生 **************/ 19 mySession.addInput(videoInput) 20 myImageOutput = AVCaptureStillImageOutput() 21 mySession.addOutput(myImageOutput) 22 let myVideoLayer = AVCaptureVideoPreviewLayer(session: mySession) 23 myVideoLayer.frame = view.bounds 24 myVideoLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill 25 view.layer!.insertSublayer(myVideoLayer,at:0) 26 mySession.startRunning() 27 } catch let error as NSError { 28 print("cannot use camera (error)") 29 } 30 } 31 32 @IBAction func takePhoto(_ sender: Any) { 33 let myAVConnection = myImageOutput.connection(with: AVMediaType.video) 34 myImageOutput.captureStillImageAsynchronously(from: myAVConnection!, completionHandler: { 35 (imageDataBuffer,error) -> Void in 36 let myImageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageDataBuffer!)) 37 }) 38 } 39}
試したこと
StackOverFlowを漁りましたが、シミュレーターだとこのような事象が発生するということがわかりましたがMacなので解決には至りませんでした。
エラーメッセージをggったり翻訳にかけてみましたが、それらしき情報が見当たりませんでした。
補足情報(FW/ツールのバージョンなど)
macos Mojave version 10.14.1
Xcode Version 10.1(10B61)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/17 12:19 編集
2018/12/18 00:27
2018/12/18 07:28