Swiftでバーコードを読もうとした時のエラー
バーコードでエラー
- Swiftでバーコードを読んでみようと、ちょっとやってみた。
すると、以下のエラーに出くわした。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[AVCaptureMetadataOutput setMetadataObjectTypes:] Unsupported type found - use -availableMetadataObjectTypes'
正誤表
どうも、処理の順番がマズってたみたいだ
- 正
let aVCaptureMetadataOutput = AVCaptureMetadataOutput() aVCaptureMetadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main) aVCaptureSession!.addOutput(aVCaptureMetadataOutput) aVCaptureMetadataOutput.metadataObjectTypes = [AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code]
- 誤
let aVCaptureMetadataOutput = AVCaptureMetadataOutput() aVCaptureMetadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main) aVCaptureMetadataOutput.metadataObjectTypes = [AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code] aVCaptureSession!.addOutput(aVCaptureMetadataOutput)
何が問題かって言うと、「metadataObjectTypes」に値を設定するタイミング・・・
SessionにaddOutputした後、じゃないと駄目みたい。