iphone swiftでQRコード認識時にクラッシュする事がある。その対策
QRコードリーダーアプリで、下記のようにカメラ内のQRコードを読み取る時に、
クラッシュする事が一定確率であった。
エラー内容
fatal error: unexpectedly found nil while unwrapping an Optional value
クラッシュ対象のコード
qrCodeObject = previewLayer.transformedMetadataObjectForMetadataObject(
metadata as! AVMetadataMachineReadableCodeObject) as!
AVMetadataMachineReadableCodeObject
この部分で、クラッシュする事がある。。
色々調べたら、AVCaptureVideoPreviewLayer内のメソッドでnilが入る事があるらしい。
ボクが対策したコード
if previewLayer.transformedMetadataObjectForMetadataObject(
metadata as! AVMetadataMachineReadableCodeObject) != nil {
//nilチェックしてから処理
qrCodeObject = previewLayer.transformedMetadataObjectForMetadataObject(
metadata as! AVMetadataMachineReadableCodeObject) as!
AVMetadataMachineReadableCodeObject
}else {
// キャプチャセッション再始動
captureSession.startRunning()
}
nilチェックをおこなってら処理する事で解決しました。
また、ただのnilの場合はカメラが動かなくなってしまうので、
キャプチャーセッション等を、再度走らせる事で思い通りの動作になりました。!
参考になれば幸いです!!