当我将一个元素插入数组时,数组索引超出范围

时间:2016-08-16 17:56:52

标签: arrays swift append swift3

我有一个包含UIViews(单元格)的数组,它开始为空。我通过循环遍历不同的数组来触发函数时设置它的值:

cells = [cell0, cell1, cell2, cell3, cell4]

// Code in function ↓

var cellAnimationArray: [NPFCarouselCell] = []

for cell in self.cells {
    if cell.frame == farLeftFrame {
        cellAnimationArray.insert(cell, at: 0)
    } else if cell.frame == leftFrame {
        cellAnimationArray.insert(cell, at: 1)
    } else if cell.frame == centerFrame {
        cellAnimationArray.insert(cell, at: 2)
    } else if cell.frame == rightFrame {
        cellAnimationArray.insert(cell, at: 3)
    } else if cell.frame == farRightFrame {
        cellAnimationArray.insert(cell, at: 4)
    } else {
        print("Frame does not exist!")
        print(cell.frame)
        return
}

当我到达cellAnimationArray.insert(cell, at: 4)行时,应用程序崩溃了:

fatal error: Array index out of range

为什么在将项目插入数组时出现索引错误?

1 个答案:

答案 0 :(得分:4)

在为insert(cell, at:4)插入足够的元素作为有效索引之前,您的错误消息告诉您正在调用4。这意味着self.cells中的项目顺序是这样的,你在插入0到3之前就是在那一行。但是你不能在4处插入,除非已经有0到3的东西。

当您使用已包含多个项目的数组时,可以避免这种情况,因为索引4已经有效。