如何检查扫描的二维码是否包含除数字以外的任何内容
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
}
}
}
对于我的项目,我使用的是 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
}
}
}