大家好,我是学习Swift的初学者。在我的程序中,我有一个包含49个项目的数组,我想通过滑动动作(从左到右和从右到左)在屏幕上逐个标签地打印出每个项目。但是,当我到达数组末尾时,由于超出数组索引范围,我得到了fatal error
。
我尝试使用计数器变量来计算滑动次数,并在达到49时将其索引号设置为0,但它不起作用。我该如何应对?谢谢。
if swipeCounter == 49{
swipeCounter = 0
}
firstCell.text = String(numberList[swipeCounter])
secondCell.text = String(numberList[swipeCounter + 1])
thirdCell.text = String(numberList[swipeCounter + 2])
swipeCounter = ++swipeCounter
println(swipeCounter)
最佳答案
由于正在检查swipeCounter的值,然后增加它的值,因此可能发生该错误。因此,即使swipeCounter
为48,也不会将其设置为0,并且尝试访问swipeCounter + 2
即50将导致崩溃。另外,我并不是真的不喜欢在代码中使用硬编码长度。
我建议这样做
firstCell.text = String(numberList[swipeCounter % numberList.count])
secondCell.text = String(numberList[(swipeCounter + 1) % numberList.count])
thirdCell.text = String(numberList[(swipeCounter + 2) % numberList.count])
模运算符应该只处理任何索引溢出,并且如果数组长度发生变化,用numberList.count替换49也将是一个不错的选择。
希望这可以帮助!