有没有一种方法可以将MicroQR条形码添加为AVMetadataObject.ObjectType?

时间:2018-11-08 20:36:55

标签: ios swift barcode

我需要使用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:的字符串放置。当然,我什至不确定这是否行得通。我真的很感激朝着正确的方向前进。谢谢

1 个答案:

答案 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]