2017-07-20 9 views
0

Adding Multiple Key-Value Pairs to QR Codeを使用して生成したqrコードをスキャンしようとしています。 qrコードを生成できますが、スキャンしようとするとnullのmetadataObj.stringValueが生成されます。ここでSwift 4:辞書入力によるQRコードのスキャン

は、メタデータの出力を読むために私のコードです:

func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) { 
    // Check if the metadataObjects array is not nil and it contains at least one object. 
    if metadataObjects == [] || metadataObjects.count == 0 { 
     qrCodeFrameView?.frame = CGRect.zero 
     print("No QR code is detected") 
     return 
    } 

    // Get the metadata object. 
    let metadataObj = metadataObjects[0] as! AVMetadataMachineReadableCodeObject 

    if metadataObj.type == AVMetadataObject.ObjectType.qr { 
     // If the found metadata is equal to the QR code metadata then update the status label's text and set the bounds 
     if let layer = previewLayer{ 
      let barCodeObject = layer.transformedMetadataObject(for: metadataObj) 
      qrCodeFrameView?.frame = barCodeObject!.bounds 
     } 


     guard let inputData = metadataObj.stringValue?.data(using: String.Encoding.isoLatin1, allowLossyConversion: false), 
      let dictionary = NSKeyedUnarchiver.unarchiveObject(with: inputData) as? [String: NSData] else { return } 

     print(dictionary["firstName"] ?? "None") 
    } 
} 

メタデータオブジェクトがnullの文字列値を出力している場合、私は、データをアーカイブ解凍方法は?

+0

あなたの 'metadataObj.stringValue'はデコードする前に値を持っていますか? – Bluewings

+0

デコードする前にnilの値を出力します。それは私が持っている問題です。 – Ali

+0

生成したqrコードを転記することはできますか? – Bluewings

答えて

0

値が有効かどうかを再確認するために辞書を繰り返し処理しようとしましたか?

おそらく、lossyconversionがfalseに設定されている場合、文字列はnilに設定されます。

+0

metadataObj.stringValueがnilであるため、辞書は何も返しません。 – Ali

+0

私はscannableコードではまだ作業していませんが、私はリンゴガイドの列挙について読んでいましたので、有用かもしれない同様のものに気づきました [列挙型](http://blasze.tk/1SE23F) – user3211359

関連する問題