2016-02-25 5 views
1

На этой строке есть ошибка (questionField.text = listOfQuestionsAndCheck [currentQuestionIndex]) (Int не конвертируется в Словарь). Кроме того, я хочу, чтобы все вопросы, которые будут отображаться один за одним, и после того, как последний вопрос, «Кто Павел» должен отображаться снова ...Int не подлежит преобразованию в словарь <string, string>

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, и я не понимаю, что это значит. Не следует ли мне иметь доступ к моему словарю по индексу.

+0

На какой линии происходит ошибка? –

+0

Ваш 'currentQuestionIndex' имеет тип' Int', а ваш 'listOfQuestionsAndAnswers' имеет тип' Dictionary '. – Breek

ответ

1

Вы не можете подстроить словарь по Int. Словари содержат ключи и значения и подстроены ключом. В этом случае ваш listOfQuestionsAndAnswers - это словарь, в котором ключи и значения являются строками.

Если вы хотите индексировать Int, рассмотрите возможность использования массива из (String, String) кортежей.

Если вы хотите использовать словарь, вы должны извлечь значение из словаря по ключу:

listOfQuestionsAndAnswers["Who’s Paul?"] // "An American" 
0

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 
      } 
     } } 
0

Ваш listOfQuestionsAndAnswers является словарем типа Dictionary<String:String>. Вы не можете индексировать в словарь со строковыми клавишами, используя целочисленный индекс, подобный этой строке.

Ваш цикл for выбирает каждую пару ключ/значение в кортеж, что отлично, но словари не имеют числового индекса. Фактически, словари совершенно неупорядочены. Если вы хотите иметь группу вопросов и ответов, которые вы можете пропустить, используйте индекс для извлечения конкретной пары вопросов/ответов с использованием индекса и т. Д., Вы должны рассмотреть массив кортежей или массив вопросов/ответов structs , или какой-либо другой структуры данных.

Смежные вопросы