AVFoundation条形码扫描器检测AVMetadataMachineReadableCodeObject与AVMetadataFaceObject

时间:2016-02-15 20:31:20

标签: ios swift avfoundation barcode-scanner

在Swift 2.0上进行编译,在10.11.3下使用Xcode 7.2.1运行IOS 9.3

尝试实现代码39条形码扫描程序,但无法计算如何在不破坏我的代码的情况下执行此操作,除非我使用此hack。

AVFoundation返回AVMetadataFaceObject&扫描条形码时的AVMetadataMachineReadableCodeObject对象。

如果我尝试将错误的对象转换为错误的类型,它会崩溃,而在我的生活中,我似乎无法找到一种方法来确定它在这个黑客之外的代码类型。

试图保卫声明;没有崩溃。尝试过/捕获;没有崩溃。试图测试类型,但似乎没有任何效果。

if metadataObjects == nil || metadataObjects.count == 0 {
        //print("No code is detected")
        return
    } else {
        let A1 = String(metadataObjects[0])
        if (A1.hasPrefix("<AVMetadataFaceObject:")) {
            print("Face -> \(A1)")
        }
        if (A1.hasPrefix("<AVMetadataMachineReadableCodeObject:")) {
            let metadataObj = metadataObjects[0] as! AVMetadataMachineReadableCodeObject
            self.lblDataInfo.text = metadataObj.stringValue
            self.lblDataType.text = metadataObj.type
            print("Machine -> \(A1) ")
        }
    }

好的,这很有效,但我不认为它的编码很好,我担心这是黑客攻击。

0 个答案:

没有答案