flyingbirdのiPhoneアプリ開発記録

- PolyRhythmの中の人がiPhoneアプリ開発中に思ったことを記録するブログです -

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した後、じゃないと駄目みたい。