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