Swift iOS。当我尝试改变一组按钮时程序崩溃

时间:2016-07-24 09:30:35

标签: arrays swift colors crash uibutton

我有大约20个按钮链接到var listener = { onbufferingprogress: function(percent) { console.log("Buffering in progress"); loadingObj.setPercent(percent); /* Move 5 seconds back */ var back_button = document.getElementById("v-back"); /* Back button */ back_button.addEventListener("click", function() { video.currentTime -= 5 }, false); } } webapis.avplay.setListener(listener); 。我希望turnRed按钮将文本颜色更改为红色。我尝试了以下代码:

allKeys

当我按下turnRed按钮时,我的程序崩溃并且xcode跳转到appDelegate文件并突出显示AppDelegate类,错误为Thread1:signal SIGABRT。

控制台说"由于未捕获的异常终止应用程序' NSRangeException原因:NSArrayI objectAtIndex

1 个答案:

答案 0 :(得分:2)

这里的问题是您将变量i设置为allKeys.count,但由于swift中的数组从零开始,因此第二十个元素实际应为allKeys[19]。因此,当循环位于i = 20时,它会尝试访问allKeys[20],这会导致应用崩溃。

解决此问题的一种方法是将i设置为allKeys.count - 1,但更好的方法是使用for-in循环而不是repeat

for key in allKeys {
    key.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)
}

在Swift中有多种循环方式,您应该使用这些选项。您可以在控制流程 here找到Apple的文档。