我有大约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
答案 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的文档。