2017-05-03 4 views
0

AVFoundation을 시작할 때 여러 유형의 바코드/QR 코드를 허용하는 데 문제가 있습니다. 그 중 하나를 사용하면 작동하지만 둘 다 받아 들일 때 사용합니다 여기에 마지막AVFoundation을 사용할 때 여러 유형의 바코드를 수용하는 방법

을 받아

[captureMetadataOutput setMetadataObjectTypes:[NSArray arrayWithObject:AVMetadataObjectTypeQRCode]]; 
[captureMetadataOutput setMetadataObjectTypes:[NSArray arrayWithObject:AVMetadataObjectTypeCode39Code] 

가 지금은 여러 종류를 추가하는 방법을 인정하는 것으로되어 관련 코드는 무엇입니까?

+0

'[captureMetadataOutput setMetadataObjectTypes :있는 NSArray의 arrayWithObjects : AVMetadataObjectTypeQRCode , AVMetadataObjectTypeCode39Code, nil]; 또는'[captureMetadataOutput setMetadataObjectTypes : @ [AVMetadataObjectTypeQRCode, AVMetadataObjectTypeCode39Code]];'? – Larme

+0

둘 다 매력처럼 작동하고 답을하면 받아 들일 것입니다. –

답변

0

setMetadataObjectTypes:을 사용할 때 metadataObjectTypes을 설정합니다. 즉, 새 값이있는 경우 이전 값을 바꿉니다. 그것들을 "더하기/합"하지 않습니다.

그래서 대신에 하나의 오브젝트 ([NSArray arrayWithObject:AVMetadataObjectTypeQRCode])와 NSArray를 사용, arrayWithObjects:과 당신이 원하는 모든 유형의 배열을, (이하 "s"를 통지)를 만듭니다. short hand syntax 함께

[NSArray arrayWithObjects: AVMetadataObjectTypeQRCode, AVMetadataObjectTypeCode39Code, nil]` 

(그 동등 물) : 최종

@[AVMetadataObjectTypeQRCode, AVMetadataObjectTypeCode39Code] 

:

[captureMetadataOutput setMetadataObjectTypes:[NSArray arrayWithObjects: AVMetadataObjectTypeQRCode, AVMetadataObjectTypeCode39Code, nil]; 

또는

[captureMetadataOutput setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode, AVMetadataObjectTypeCode39Code]];