gpt4 book ai didi

arrays - swift 的 iOS。当我尝试改变按钮数组时程序崩溃

转载 作者:行者123 更新时间:2023-11-28 12:44:22 25 4
gpt4 key购买 nike

我有大约 20 个链接到 allKeys 的按钮。我想要 turnRed 按钮将其文本的颜色更改为红色。我尝试了以下代码:

    @IBOutlet var allKeys: [UIButton]!


@IBAction func turnRed(sender: UIButton) {
var i = allKeys.count

repeat {
allKeys[i].setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)
i -= 1
} while i != -1
}

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

控制台显示“由于未捕获的异常‘NSRangeException 原因而终止应用程序:NSArrayI objectAtIndex

最佳答案

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

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

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

在 Swift 中有多种循环方式,您应该根据自己的优势使用这些选项。您可以找到 Apple 的 Control Flow 文档 here .

关于arrays - swift 的 iOS。当我尝试改变按钮数组时程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38550558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com