在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) ")
}
}
好的,这很有效,但我不认为它的编码很好,我担心这是黑客攻击。