处理从QR码读取的数据

时间:2016-07-11 17:37:15

标签: ios iphone arrays swift qr-code

我正在尝试构建一个IOS应用程序,让我将学校科目输入一系列文本框。所有输入的科目都将进入阵列;我将从中制作一个字符串。然后我将使用该字符串创建一个包含主题列表的QR码...(无论如何,这是计划!)。

以下是我目前用于创建将用于创建QR代码的字符串的代码:    //插座

@IBOutlet var moduleOne: UITextField!
@IBOutlet var moduleTwo: UITextField!
@IBOutlet var moduleThree: UITextField!
@IBOutlet var moduleFour: UITextField!


//Actions

@IBAction func goButton(sender: AnyObject) {

    let subjectOne = moduleOne.text!
    let subjectTwo = moduleTwo.text!
    let subjectThree = moduleThree.text!
    let subjectFour = moduleFour.text!

    let newArray: [String] = ["\(subjectOne)", "\(subjectTwo)", " (subjectThree)", "\(subjectFour)"]

    let arrayString = newArray.joinWithSeparator(" ")
    //print(arrayString)

}

我的目标是能够扫描二维码并将之前输入的每个主题放入各自的标签中...这就是我被困住的地方!

是否可以从QR码读取数据然后使用特定部件?即如果我说“主题一”为“数学”,我可以确保在阅读二维码后“数学”进入我的“主题一”标签吗?基本上可以在QR码中查找特定数据吗?

道歉,如果我不是很清楚,这很难解释!

1 个答案:

答案 0 :(得分:0)

绝对!你要做的是指定一种“协议”(不是一个快速protocol而是一组“规则”)。

您现在所做的只是将值组合成一个字符串,用空格分隔。这带来了一些限制:

  • 如果要引入新字段,则必须将其附加到字符串的末尾(否则,您必须更改实施的大部分内容以考虑新值+所有旧QR-代码将停止工作)。
  • 如果一个或多个字段为空,则在字符串中间留下两个空格。根据您的解析器,这可能会导致错误,其中值以错误的方式偏移。
  • 解析时,您依赖于按特定顺序排列的值。

我反而建议您从URL中获取一些灵感。请考虑以下示例:

let qrInput = "subjectOne=maths&subjectTwo=music&fall="
let parsed: [String:String] = qrInput.componentsSeparatedByString("&").reduce([:], combine: { (dict, keyValue) in
    var dict = dict
    let components = keyValue.componentsSeparatedByString("=")
    if components.count > 1 {
        dict[components[0]] = components[1]
    }
    return dict
})

该示例将返回如下字典:["subjectTwo": "music", "subjectOne": "maths", "fall": ""]

此解决方案更安全。只需执行moduleOne.text = dict["subjectTwo"]或其他操作即可在扫描时填充UI。