对于我的项目,我正在使用QRCodescanner,如果代码只包含数字,它应该只响应qrcode。因此,只要代码包含除数字之外的任何内容,它应该提供错误警报。 现在,每当我扫描一个代码时,只有一个整数,应用程序崩溃。
以下是我到目前为止处理输出的方法:
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变量之前,我想检查它是否真的只包含数字,但我不知道如何检查它。 谢谢你的帮助 !
答案 0 :(得分:0)
您需要安全地打开选项。您的应用崩溃是因为您误用了!
运营商。
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
}
}
}