如何检查扫描的二维码是否包含除数字以外的任何内容

How to check if the scanned QRCode contains anything but numbers

对于我的项目,我使用的是 QRCodescanner,如果代码只包含数字,它应该只响应二维码。因此,只要代码中包含除数字以外的任何内容,它都应该发出错误警报。

现在每次我扫描不包含整数的代码时,应用程序都会崩溃。

到目前为止,我是这样处理输出的:

 func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection){
    
    
    if metadataObjects.count != 0 {
        
        if let object = metadataObjects[0] as? AVMetadataMachineReadableCodeObject{
            
            if object.type == AVMetadataObject.ObjectType.qr{
                self.session.stopRunning()
                
                ergebnis = Int(object.stringValue!)!
                
                barnummer = ergebnis/1000*1000
                
                qrbar = [QRBereich]()
                qrbarname = ""
                
                fetchData()
                }
            }
        }
    }

在将对象 Value 转换为 Int 变量之前,我想检查它是否真的只包含数字,但我不知道如何检查它。

您需要安全地解包可选值。您的应用程序崩溃是因为您滥用了 ! 运算符。

if object.type == AVMetadataObject.ObjectType.qr{
    self.session.stopRunning()

    if let string = object.stringValue {
        if let ergebnis = Int(string) {
            barnummer = ergebnis/1000*1000

            qrbar = [QRBereich]()
            qrbarname = ""

            fetchData()
        } else {
            // Not an integer, show error
        }
    }
}