Int不能转换为Dictionary

此行有一个错误(questionField.text = listOfQuestionsAndAnswers [currentQuestionIndex])(Int不能转换为Dictionary)。 此外,我希望所有的问题一个一个地显示出来,在最后一个问题之后,应该再次显示“谁是保罗”……

let listOfQuestionsAndAnswers = ["Who's Paul?": "An American", "Who's Joao?": "A Bresilian", "Who's Riccardo?": "An Italian"] @IBAction func answerButtonTapped (sender: AnyObject){ for (Question, rightAnswer) in listOfQuestionsAndAnswers { questionField.text = listOfQuestionsAndAnswers[currentQuestionIndex] if currentQuestionIndex <= listOfQuestionsAndAnswers.count { currentQuestionIndex = (++currentQuestionIndex) % listOfQuestionsAndAnswers.count answerBut.setTitle("ANSWER", forState: UIControlState.Normal) } else { (sender as UIButton).userInteractionEnabled = false } } } 

我收到错误Int不能转换为DictionaryIndex,我不明白这意味着什么。 我不应该能够通过索引访问我的字典。

你不能通过Int下标字典。 字典包含键和值,并由键下标。 在这种情况下, listOfQuestionsAndAnswers是一个Dictionary,其中键和值都是字符串。

如果您想通过Int下标,请考虑使用(String, String)元组的数组。

如果要使用字典,则必须通过其键从字典中检索值:

 listOfQuestionsAndAnswers["Who's Paul?"] // "An American" 

listOfQuestionsAndAnswers不是一个数组是一个字典而listOfQuestionsAndAnswers [someIntIndex]不起作用,因为你的键是字符串

  let listOfQuestionsAndAnswers = ["Who's Paul?": "An American", "Who's Joao?": "A Bresilian", "Who's Riccardo?": "An Italian"] @IBAction func answerButtonTapped (sender: AnyObject){ for (Question, rightAnswer) in listOfQuestionsAndAnswers { //questionField.text = listOfQuestionsAndAnswers[currentQuestionIndex] //changed to this questionField.text = Quesition if currentQuestionIndex <= listOfQuestionsAndAnswers.count { currentQuestionIndex = (++currentQuestionIndex) % listOfQuestionsAndAnswers.count answerBut.setTitle("ANSWER", forState: UIControlState.Normal) } else { (sender as UIButton).userInteractionEnabled = false } } } 

您的listOfQuestionsAndAnswers是Dictionary类型的Dictionary 。 您不能使用像该行那样的整数索引使用字符串键索引到字典。

你的for循环将每个键/值对提取到一个元组,这很好,但字典没有数字索引。 事实上,字典是完全无序的。 如果你想要一组可以循环的问题和答案,使用索引来获取使用索引等的特定问题/答案对,你应该考虑一个元组数组或一组问题/答案结构,或其他一些数据结构。