我有一个包含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
为什么在将项目插入数组时出现索引错误?
答案 0 :(得分:4)
在为insert(cell, at:4)
插入足够的元素作为有效索引之前,您的错误消息告诉您正在调用4
。这意味着self.cells
中的项目顺序是这样的,你在插入0到3之前就是在那一行。但是你不能在4处插入,除非已经有0到3的东西。
当您使用已包含多个项目的数组时,可以避免这种情况,因为索引4已经有效。