【发布时间】:2018-06-20 14:20:24
【问题描述】:
所以我正在开发一个允许用户进行多个不同测验的项目。
我的在线托管 XML 格式如下:
<questions>
<question>
<clue> sample clue 1 </clue>
<correct_answer>2</correct_answer>
<enumeration>1</enumeration>
<info> sample info 1 </info>
<location_clue>Sample locationClue (5,5)</location_clue>
<option_a>Ans1</option_a>
<option_b>Ans2</option_b>
<option_c>Ans3</option_c>
</question>
<question>
<clue> sample clue 2 </clue>
<correct_answer>3</correct_answer>
<enumeration>2</enumeration>
<info> sample info 2 </info>
<location_clue>Sample locationClue (4,2)</location_clue>
<option_a>Ans1</option_a>
<option_b>Ans2</option_b>
<option_c>Ans3</option_c>
</question>
</questions>
我的解析器初始化如下所示:
if let urlString = URL(string: "realURL goes here.xml -- This has an actual url in my code obviously.")
{
if let parser = XMLParser(contentsOf: urlString)
{
parser.delegate = self
parser.parse()
}
}
parserDidStartElement:
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:])
{
thisName = elementName
if thisName == "hunt"
{
}
}
ParserFoundCharacter:
func parser(_ parser: XMLParser, foundCharacters string: String)
{
let data = string.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
if data.count != 0
{
switch thisName
{
case "clue": questionClue = data
break
case "info": questionInfo = data
break
case "location_clue": locationClue = data
break
case "option_a": questionAnswerA = data
break
case "option_b": questionAnswerB = data
break
case "option_c": questionAnswerC = data
default:
break
}
}
}
这是 HuntDetail.swift 类,它创建了一个名为 QUIZ 的结构,在这个结构内部目前有 4 个变量,question、answerA、answerB 和 answerC:
import Foundation
struct QUIZ {
var question = ""
var answerA = ""
var answerB = ""
var answerC = ""
}
本质上,该应用将允许用户进行多项选择测验。选择答案后,界面顶部的进度条将显示当前测验的进度。
我想知道是否可以在数组中存储以下值:线索、信息、位置线索、选项a、b、c...,我将从数组开始制定实际的测验功能。
就目前而言,应用程序只会显示前面提到的数据的最后一个元素。
我知道这很长,可能很难理解我想要做什么,但如果有人能提供帮助,我将不胜感激。还应该注意的是,是的,我对 Swift 和 iOS 开发作为一个整体来说还很陌生。
【问题讨论】:
标签: arrays swift xml parsing struct