2014-10-29 58 views
0

嘿家伙我是一个快速学习的初学者。在我的程序中,我有一个包含49个项目的数组,并且我想通过滑动动作(从左到右和从右到左)按标签将每个项目逐个打印出来。但是,当我到达阵列的末尾时,由于数组索引范围,我得到fatal error如何从swift开始到数组范围的索引结束?

我试图使用计数器变量来计数滑动,并将其索引编号设置为0时,它达到49,但它不起作用。我该如何处理这个问题?谢谢。

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) 

回答

1

该错误可能是因为您正在检查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也将是一个很好的举措,如果数组长度的变化。

希望这会有所帮助!