从Swift 3.0到Swift 4.2的转换错误“无法将类型'[String]'的值分配给类型'[AVMetadataObject.ObjectType]吗?'“

时间:2019-09-16 20:03:38

标签: ios swift swift3 swift4.2 xcode10.3

我是Swift / iOS开发的新手,正在致力于将Swift 3.0项目转换为Swift 4.2,以支持更新的设备。

在此过程中,我遇到以下错误:

  

无法将类型为[[String]]的值分配为类型为[[AVMetadataObject.ObjectType]?

下面是引发错误的代码行:

let metadataOutput = AVCaptureMetadataOutput()

metadataOutput.metadataObjectTypes = [convertFromAVMetadataObjectObjectType(AVMetadataObject.ObjectType.upce),
                                      convertFromAVMetadataObjectObjectType(AVMetadataObject.ObjectType.code39),
                                      convertFromAVMetadataObjectObjectType(AVMetadataObject.ObjectType.code39Mod43),
                                      convertFromAVMetadataObjectObjectType(AVMetadataObject.ObjectType.ean13),
                                      convertFromAVMetadataObjectObjectType(AVMetadataObject.ObjectType.ean8),
                                      convertFromAVMetadataObjectObjectType(AVMetadataObject.ObjectType.code93),
                                      convertFromAVMetadataObjectObjectType(AVMetadataObject.ObjectType.code128),
                                      convertFromAVMetadataObjectObjectType(AVMetadataObject.ObjectType.pdf417),
                                      convertFromAVMetadataObjectObjectType(AVMetadataObject.ObjectType.aztec),
                                      convertFromAVMetadataObjectObjectType(AVMetadataObject.ObjectType.interleaved2of5),
                                      convertFromAVMetadataObjectObjectType(AVMetadataObject.ObjectType.itf14),
                                      convertFromAVMetadataObjectObjectType(AVMetadataObject.ObjectType.dataMatrix)]// Support for AVMetadataObjectTypeQRCode / qr code is removed from the list.

1 个答案:

答案 0 :(得分:2)

移民最大程度地提供帮助,但有时这种帮助会误导人。

您可以仅使用静态成员填充数组

metadataOutput.metadataObjectTypes = [.upce, .code39, .code39Mod43, .ean13, .ean8, .code93, .code128, .pdf417, .aztec, .interleaved2of5, .itf14, .dataMatrix]