一尘不染

致命错误:Swift Xcode6中的数组索引超出范围

swift

我的函数中不断出现此错误

我正在尝试读取数组answerRecord中的值。我使用一个全局变量arrayCount,它跟踪im当前指向哪个索引。

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

我在较早的函数中做了一个println,它为var arrayCount返回一个整数1的值,因此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()
}

阅读 219

收藏
2020-07-07

共1个答案

一尘不染

假设您有一个数组,其中包含一个对象:

let arr = ["hello"]

该数组中唯一有效的索引是0。arr[0]是合法的。arr[1]不是。该数组有1个元素,但其索引号为0。

对于任何数组都是如此。每个数组都包含一些元素。它可能是0个元素,在这种情况下, 没有
索引是合法的。它可能是3个元素,在这种情况下,您可以通过索引号0、1和2引用数组的元素。依此类推。就这样。这些是规则。您不能使用任何其他索引号,否则将崩溃。

因此错误消息只是告诉您您正在犯该错误。您有一个数组answerRecord,它有一定数量的元素-
我不知道有多少个元素,也没关系。然后,您使用的是表达式answerRecord[arrayCount],而值的值arrayCount超出了我刚刚说明的范围。这就是您需要知道的一切。该错误消息告诉您程序中的错误。现在您可以修复它。

2020-07-07