Можно ли прочитать значение коррекции ошибок QR-кода из iOS? - PullRequest
0 голосов
/ 23 марта 2020

Все QR-коды определяют уровень исправления ошибок, определяемый двумя «битами / пикселями» в левом нижнем углу (см. здесь .). Хотя я знаю, как сканировать QR-коды в Swift, я не знаю, как получить исправление ошибок для кода, который я сканирую.

Это необходимо, потому что наше приложение пытается сканировать, а затем воссоздать отсканированный QR-код программно.

Вот наш текущий код, в котором мы получили уведомление об успешном сканировании QR-кода, но я не вижу способа получить подробности QR-спецификации c, только результаты успешного сканирования ...

extension QRCodeScannerViewController : AVCaptureMetadataOutputObjectsDelegate {

    func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {

        guard let metadataObject = metadataObjects.first,
              let readableObject = metadataObject as? AVMetadataMachineReadableCodeObject,
              let stringValue = readableObject.stringValue else {
            return
        }

        captureSession.stopRunning()

        performSegue(withIdentifier: "ShowResults", sender: stringValue)
    }
}

Просматривая документы, я также вижу CIQRCodeDescriptor (https://developer.apple.com/documentation/coreimage/ciqrcodedescriptor), что имеет то значение, которое мы ищем, но я не уверен, как получить экземпляр для проверки.

1 Ответ

0 голосов
/ 23 марта 2020

Duh! Это было прямо передо мной!

if let qrCodeDescriptor = readableObject.descriptor as? CIQRCodeDescriptor{

    switch qrCodeDescriptor.errorCorrectionLevel {
        case .levelL : print("L")
        case .levelM : print("M")
        case .levelH : print("H")
        case .levelQ : print("Q")
    }
}
...