Swift3:我想功能读取和计数QR码

问题描述:

我正在构建一个QR码阅读器应用程序。我写了一个函数来读取和计算QR码。我可以显示动态按钮标题的计数;但是,QR码值不会像1,2,3一样计​​数。显示自然的QR值。Swift3:我想功能读取和计数QR码

我的ViewController:

class LentScanViewController: QRScannerViewController { 

var device_name = "" 
var countNum = 0 

@IBOutlet weak var LentButton: UIButton! 
@IBAction func lentButton(_ sender: Any) { 
    performSegue(withIdentifier: "toLentTable",sender: device_name) 
} 
override func viewDidLoad() { 
    super.viewDidLoad() 
} 

func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) { 


    if metadataObjects == nil || metadataObjects.count == 0 { 
     qrCodeFrameView?.frame = CGRect.zero 
     return 
    } 

    let metadataObj = metadataObjects[0] as! AVMetadataMachineReadableCodeObject 

    if metadataObj.type == AVMetadataObjectTypeQRCode { 

     let barCodeObject = videoPreviewLayer?.transformedMetadataObject(for: metadataObj) 
     qrCodeFrameView?.frame = barCodeObject!.bounds 

     if metadataObj.stringValue != nil { 
      device_name = metadataObj.stringValue 

      countNum = countNum + 1 
      LentButton.setTitle(String(countNum) + "Lent", for:[]) 
     } 
    } 
} 

请尝试:

var qrCodes:[String] = [] // declare it as member variable in the class 

然后调用

if metadataObj.stringValue != nil { 
    let device_name = metadataObj.stringValue 
    if !qrCodes.contains(device_name!) { 
     qrCodes.append(device_name!) 
    } 
    countNum = countNum + 1 
    messageLabel.text = String(countNum) + "Lent" 
} 
+0

谢谢。但是这个代码是显示metadataObj值的。我想如果扫描一个QR码显示1.一个更多的扫描显示2. – Alex

+0

这就像这个视频 https://www.youtube.com/watch?v=zKMyp17Squ8&feature=youtu.be – Alex

+0

编辑答案。请检查。 –