使用从QR码中读取的数据
问题描述:
我正在尝试构建一个IOS应用程序,该应用程序允许我将学校主题输入到一系列文本框中。所有输入的主题将进入阵列;其中我会做一个字符串。然后,我将使用该字符串创建一个包含主题列表的QR码(无论如何,这就是计划!)。使用从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码中的数据,然后使用特定的部件?即如果我已经说“Subject One”为“Maths”,那么我可以确保一旦阅读QR码后,“Maths”会进入我的“Subject One”标签?基本上可以在QR码内查找特定数据吗?
道歉,如果我不是很清楚,这是一个相当困难的解释!
答
绝对!你需要做的是指定一种“协议”(不是迅速的,而是一组“规则”)。
您现在所做的只是将这些值合并为一个字符串,并用空格分隔。这带有一定的局限性:
- 如果你想引入一个新的领域,你必须把它添加到字符串的结尾(否则你就必须改变你的实现占较大部分新值+所有旧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"]
或其他操作即可在扫描时填充您的用户界面。
谢谢您的回复!我想我明白你的意思,(我需要对字典进行更多的研究!)所以当我最终扫描生成的QR码时,我只需要寻找“subjectTwo”,并处理这些数据呢? – evorg88
多数民众赞成的想法,是的;) – Mattias
非常好,非常感谢你! – evorg88