如何在使用AVFoundation时接受多种类型的条形码
问题描述:
我在启动AVFoundation时遇到了允许多种类型的条形码/ QR码的问题,如果我使用其中的一种,它可以工作,但是当我尝试仅接受它时接受最后一个如何在使用AVFoundation时接受多种类型的条形码
下面是相关的代码片段
[captureMetadataOutput setMetadataObjectTypes:[NSArray arrayWithObject:AVMetadataObjectTypeQRCode]];
[captureMetadataOutput setMetadataObjectTypes:[NSArray arrayWithObject:AVMetadataObjectTypeCode39Code]
的是,现在我该怎么添加几种类型的被接受?
答
当您使用setMetadataObjectTypes:
时,它将设置metadataObjectTypes
,即如果有新值,则替换之前的值。它不会“添加/求和”它们。
因此,如果不使用只有一个对象的NSArray
([NSArray arrayWithObject:AVMetadataObjectTypeQRCode]
),请使用arrayWithObjects:
(注意“s”)创建一个包含所有类型的数组。
[NSArray arrayWithObjects: AVMetadataObjectTypeQRCode, AVMetadataObjectTypeCode39Code, nil]`
随着short hand syntax(它的等价物):
@[AVMetadataObjectTypeQRCode, AVMetadataObjectTypeCode39Code]
决赛:
[captureMetadataOutput setMetadataObjectTypes:[NSArray arrayWithObjects: AVMetadataObjectTypeQRCode, AVMetadataObjectTypeCode39Code, nil];
或
[captureMetadataOutput setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode, AVMetadataObjectTypeCode39Code]];
'[captureMetadataOutput setMetadataObjectTypes:[NSArray的arrayWithObjects:AVMetadataObjectTypeQRCode ,AVMetadataObjectTypeCode39Code,nil];'?或'[captureMetadataOutput setMetadataObjectTypes:@ [AVMetadataObjectTypeQRCode,AVMetadataObjectTypeCode39Code]];'? – Larme
都像魅力一样工作,让它成为答案,我会接受 –