Неустранимая ошибка: индекс массива вне допустимого диапазона в Swift Xcode6

Я продолжаю получать эту ошибку в моей функции

Я пытаюсь прочитать значение в массиве answerRecord. Я использую глобальную переменную arrayCount, которая отслеживает, на какой индекс я сейчас указываю.

func buttonColourControl(){
    switch answerRecord[arrayCount]{
    case1: xxxxxxx

Я сделал println в своей предыдущей функции, и она возвращает значение int 1 для var arrayCount, поэтому arrayCount не пуст. Таким образом, он должен иметь возможность интерпретировать массив как:

* при условии, что arrayCount теперь равен 1, answerRecord[arrayCount] следует интерпретировать как answerRecord[1]. Пожалуйста, поправьте меня, если я ошибаюсь

@IBAction func nextButtonClicked(sender: UIButton) {
    arrayCount = ++arrayCount
    question.text = spouseQuesion[arrayCount]
    controlBackNextButton()
    answer1Label.text = spouseAnswer1[arrayCount]
    answer2Label.text = spouseAnswer2[arrayCount]
    answer3Label.text = spouseAnswer3[arrayCount]
    println(arrayCount)
    buttonColourControl()
}

person Goh Weai Peng    schedule 19.12.2014    source источник
comment
В какой строке возникает ошибка?   -  person matt    schedule 19.12.2014
comment
в операторе switch внутри func buttonColourControl()   -  person Goh Weai Peng    schedule 19.12.2014
comment
Итак, эта ошибка означает, что когда вы говорите answerRecord[arrayCount], значение arrayCount не соответствует ни одному индексу answerRecord. Вы не можете просто использовать любое значение здесь. Он должен быть между 0 и размером массива. Счетчик самого массива слишком велик.   -  person matt    schedule 19.12.2014
comment
Откуда берется значение arrayCount? Что на самом деле находится в answerRecord?   -  person matt    schedule 19.12.2014
comment
Привет, Мэтт, я знаю, где моя ошибка. Спасибо за четкое объяснение. Я читаю следующий элемент, прежде чем добавить в него значение. теперь я хочу сделать оператор IF, чтобы проверить, пуст ли массивRecord[arrayCount], но я получаю другую ошибку. if answerRecord[arrayCount] != nil ‹ошибка: невозможно вызвать != с аргументом› -› Что это значит?   -  person Goh Weai Peng    schedule 19.12.2014
comment
Не пиявка. Если у вас есть другой вопрос, задайте новый вопрос!   -  person matt    schedule 19.12.2014
comment
Но я все равно вам скажу. Это никогда не может быть нулем. Это не Руби! Это даст значение или произойдет сбой. Законно использовать индекс или нет.   -  person matt    schedule 19.12.2014
comment
Спасибо, Мэтт. Поднимет новый вопрос в будущем. Извините за это, так как я впервые использую эту платформу.   -  person Goh Weai Peng    schedule 19.12.2014
comment
Без проблем! Мы любим вопросы! :)   -  person matt    schedule 19.12.2014


Ответы (1)


Допустим, у вас есть массив с одним объектом в нем:

let arr = ["hello"]

Единственный допустимый индекс в этом массиве — 0. arr[0] является допустимым. arr[1] нет. Массив имеет 1 элемент, но его порядковый номер равен 0.

Это справедливо для любого массива. Каждый массив содержит некоторое количество элементов. Это может быть 0 элементов, и в этом случае отсутствие индекса допустимо. Это может быть 3 элемента, и в этом случае вы можете ссылаться на элементы массива по номерам индексов 0, 1 и 2. И так далее. Это все. Таковы правила. Вы не можете использовать любой другой номер индекса, иначе произойдет сбой.

Таким образом, сообщение об ошибке просто говорит вам, что вы совершаете эту ошибку. У вас есть массив answerRecord и в нем какое-то количество элементов - я не знаю сколько, да это и не важно. Тогда вы используете выражение answerRecord[arrayCount], а значение arrayCount выходит за рамки, которые я только что объяснил. Это все, что вам нужно знать. Сообщение об ошибке говорит вам об ошибке в вашей программе. Теперь вы можете это исправить.

person matt    schedule 19.12.2014