通过调查问题SWIFT在JSON字典中运行循环

时间:2016-05-27 17:01:38

标签: json swift loops

所以这是我的代码来迭代我的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按钮来控制循环,然后它会迭代到下一个问题。我该怎么做?

2 个答案:

答案 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,否则它会找到下一个问题并返回。