我有從我的應用程式掃描 QR 碼的代碼,但我希望將從 QR 碼獲得的字串傳遞到我選擇的變數中。
該應用程式的功能是使用二維碼登錄,該字串是顯示用戶特定資料的 ID
這是我的 QR 碼掃描代碼,addAction 的一部分是顯示您在掃描 QR 碼時得到的內容,我希望將彈出警報中顯示的字串決議為全域變數,以便用戶將使用從 QR 獲得的 ID 登錄。
我搜索了很多關于使用 QR 碼登錄或如何將資料從 QR 碼決議為變數的特定主題,但沒有出現任何結果,我想為什么不在這里發布并幫助將來會遇到困難的其他人:)
class ScannerViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate {
var video = AVCaptureVideoPreviewLayer()
override func viewDidLoad() {
super.viewDidLoad()
//Creating session
let session = AVCaptureSession()
//Define capture device
let captureDevice = AVCaptureDevice.default(for: AVMediaType.video)
do {
let input = try AVCaptureDeviceInput(device: captureDevice!)
session.addInput(input)
} catch {
print("ERROR")
}
let output = AVCaptureMetadataOutput()
session.addOutput(output)
output.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
output.metadataObjectTypes = [AVMetadataObject.ObjectType.qr]
video = AVCaptureVideoPreviewLayer(session: session)
video.frame = view.layer.bounds
view.layer.addSublayer(video)
session.startRunning()
}
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
if metadataObjects != nil && metadataObjects.count != 0 {
if let object = metadataObjects[0] as? AVMetadataMachineReadableCodeObject {
if object.type == AVMetadataObject.ObjectType.qr {
let alert = UIAlertController(title: "QR Code", message: object.stringValue, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Retake", style: .default, handler: nil))
alert.addAction(UIAlertAction(title: "Copy", style: .default, handler: { (nil) in
UIPasteboard.general.string = object.stringValue
}))
present(alert, animated: true, completion: nil)
}
}
}
}
}
uj5u.com熱心網友回復:
你在下面的函式中得到了那個字串,你只需要在你想要的地方設定那個 id,就像這樣
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
if metadataObjects != nil && metadataObjects.count != 0 {
if let object = metadataObjects[0] as? AVMetadataMachineReadableCodeObject {
if object.type == AVMetadataObject.ObjectType.qr {
// You have got the string
let id = object.stringValue
// you can set the id where ever you want but avoid global value
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/415445.html
標籤:
下一篇:使字串中的整數變為粗體-快速
