バーコードリーダアプリケーションを作成していますが、コード128のリニアタイプのバーコードは検出できません。Qrコード、EAN13タイプ、ISBNタイプに問題はありません。私のコードは非常に簡単です:スウィフト:リニアタイプのバーコードを検出できません
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
if metadataObjects.count != 0 {
if let object = metadataObjects[0] as? AVMetadataMachineReadableCodeObject {
if object.type == AVMetadataObject.ObjectType.qr {
if let text = object.stringValue {
print(text)
session.stopRunning()
let alertVC = UIAlertController(title: "QR Code", message: text, preferredStyle: UIAlertControllerStyle.alert)
alertVC.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action) in
self.session.startRunning()
}))
present(alertVC, animated: true, completion: nil)
}
} else {
if let text = object.stringValue {
print("Other code detected: ", text)
}
}
}
}
私は私のアプリをテストするためにthis無料のオンラインバーコードジェネレータを使用していました。私はリニアコード以外のほとんどのバーコードを検出することができます。誰もこのような問題に遭遇しましたか?
:配列の最初の要素だけは、私が代わりに
AVMetadataObject?
とAVMetadataObject.ObjectType
があなたの比較において冗長である任意の要素を返します添字[0]
の配列.first
を使用することをお勧めします使用されている場合は別のオプションですあなたは設定しました。 'AVMetadataObjectTypeCode128Code'に新しい構文' [.code128] 'を含めるようにしてください –@LeoDabusありがとう、私はこの部分を完全に逃しました。それはすべて正常に動作することを追加した後。 – Koh