我需要使用iOS设备上的相机扫描MicroQR条码。有人知道添加类型的本地方法吗?例如,内置函数的常量如下所示:哦,是的,我正在使用Swift
let supportedCodeTypes = [AVMetadataObject.ObjectType.upce, AVMetadataObject.ObjectType.code39,
AVMetadataObject.ObjectType.code39Mod43, AVMetadataObject.ObjectType.code93,
AVMetadataObject.ObjectType.code128, AVMetadataObject.ObjectType.ean8,
AVMetadataObject.ObjectType.ean13, AVMetadataObject.ObjectType.aztec,
AVMetadataObject.ObjectType.pdf417, AVMetadataObject.ObjectType.itf14,
AVMetadataObject.ObjectType.dataMatrix, AVMetadataObject.ObjectType.interleaved2of5,
AVMetadataObject.ObjectType.qr]
我在想我可以这样实现:
let microqr = AVMetadataObject.ObjectType(rawValue: String)
然后我就可以将其添加到我的数组中,但是我不知道将什么作为rawValue:的字符串放置。当然,我什至不确定这是否行得通。我真的很感激朝着正确的方向前进。谢谢
答案 0 :(得分:0)
否-AVCaptureMetadataOutput
的识别引擎在系统软件或硬件中,并且Apple不提供用于插入自己的引擎以用于新对象类型的API。
您是正确的,可以使用AVMetadataObject.ObjectType
初始化程序和任何任意字符串构造类型init(rawValue: String)
的值。但是,AVCapture系统只能对它知道的对象类型起作用-AVMetadataObject.ObjectType
类型的其他值对于使用该类型的API毫无意义。 (我不确定此类API是否会忽略未知的ObjectType
值或引发错误,但这很容易检查...)
换句话说,调用AVMetadataObject.ObjectType(rawValue: "someNewBarcodeStandard")
不会比AVMetadataObject.ObjectType(rawValue: "")
教AVCapture如何识别这种条形码。
顺便说一句,Swift类型推断意味着您不必写出所有类型/常量名称:
let supportedCodeTypes: [AVMetadataObject.ObjectType] = [.upce, .code39,
.code39Mod43, .code93,
.code128, .ean8,
.ean13, .aztec,
.pdf417, .itf14,
.dataMatrix, .interleaved2of5,
.qr]