【问题标题】:Working with data read from a QR code处理从 QR 码读取的数据
【发布时间】:2016-07-11 17:37:15
【问题描述】:

我正在尝试构建一个 IOS 应用程序,它可以让我将学校科目输入到一系列文本框中。所有输入的主题都将进入数组;我将从其中制作一个字符串。然后,我将使用该字符串创建一个包含主题列表的二维码……(这就是计划!)。

这是我目前用来创建字符串的代码,我将用它来创建二维码: //网点

@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 码读取数据,然后使用特定部件?即,如果我将“主题一”声明为“数学”,我是否可以在阅读二维码后确保“数学”进入我的“主题一”标签?基本上可以在二维码中查找具体数据吗?

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

【问题讨论】:

    标签: ios iphone arrays swift qr-code


    【解决方案1】:

    绝对!你需要做的是指定一种“协议”(不是快速的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。

    【讨论】:

    • 感谢您的回复!我想我明白你的意思,(我需要对字典做更多的研究!)所以当我最终扫描生成的二维码时,我可以只查找“subjectTwo”并使用其中包含的数据?
    • 就是这个想法,是的 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    相关资源
    最近更新 更多