所以这是我的代码来迭代我的JSON字典,并在我的控制台上打印每个问题,而不是问题标题。
for x in r {
if(x.0.containsString("Question")){
print(x.1)
self.questionLabel.text = (x.1) as! String
} else if (x.0.containsString("Ladder")) {
print(x.1)
}
}
我希望能够通过按下NEXT按钮来控制循环,然后它会迭代到下一个问题。我该怎么做?
答案 0 :(得分:0)
如果您可以提供有关字典构建方式的一些信息,我可以提供更好的答案,但这是我可以为您提供的代码。希望它有所帮助
let trackingNumber: Int = 0
let arrayWithDictionary = NSArray() //Assuming you have a array with dictionaries
func getNextQuestion(){
let question = arrayWithDictionary[trackingNumber].valueForKey("Question") as! String
let ladder = arrayWithDictionary[trackingNumber].valueForKey("ladder") as! String
self.questionLabel.text = question
trackingNumber += 1
}
连接您的"下一个问题"按钮和电话' getNextQuestion()'得到下一个问题。
@IBAction func nextButton(sender: UIButton){
getNextQuestion()
}
答案 1 :(得分:0)
字典是一种序列类型,位于称为生成器的东西之上。生成器通过一个名为next()的方法来促进循环。通过调用next(),您可以访问序列中的下一个项目。以下几行中的内容可以让您最大程度地了解您所追求的目标:
let dict = ["Question":"What is the population of ...",
"Ladder" : "Something else I guess?"]
var generator = dict.generate()
func nextQuestion() -> String? {
if let pair = generator.next() {
if pair.0.containsString("Question") {
return pair.1
}
// recusively calls itself until if finds another question
// or runs out of entries
return nextQuestion()
}
// no more entries in the dictionary
return nil
}
print(nextQuestion()) // prints: Optional("What is the population of ...")
print(nextQuestion()) // prints: nil
所以基本上,nextQuestion()会搜索生成器,直到它找到下一个问题并返回它。它要么用完了要搜索的东西,所以返回nil,否则它会找到下一个问题并返回。