func buttonAppearance() {
let buttons = [buttonOneView, buttonTwoView, buttonThreeView, buttonFourView, buttonFiveView, buttonSixView, buttonSevenView, buttonEightView, buttonNineView, buttonTenView, buttonElevenView, buttonTwelveView, previousButtonView, skipButtonView, submitButtonView]
for button in buttons {
button?.layer.cornerRadius = 5.0
button?.layer.shadowOffset = CGSize(width: 2.0, height: 2.0)
button?.layer.shadowColor = UIColor.red.cgColor
button?.layer.shadowOpacity = 1.0
}
}
每当我注释掉数组和与之相关的任何代码时,索引就会完成,我可以很好地运行和构建。还有其他人对此有任何问题吗?我研究了一下,发现这是 Xcode 8.1 修复的一个错误,但我已经更新到最新了,这仍然是一个问题。我想有一个解决方法,但这只是肮脏的。
最佳答案
删除按钮后的可选问号。 在你的数组中,你有与循环将经过的项目一样多的项目。 所以你知道“button”将作为迭代器存在于你的数组中,因为你在其中有项目并且你正在循环它。
你说如果你注释掉数组,索引就可以工作。但是您的buttonAppearance()函数内的for循环与数组直接相关,所以我不确定当您注释掉数组及其相关代码时到底索引了什么。
要问自己的一个重要问题是放置在数组中的项目的数据类型,以及如果在数组内扩展任何按钮对象,是否需要遵守某些协议(protocol)。 当然,for 循环适用于原始数据类型,因此如果它不是可选(隐式/显式)处理的问题 - 那么请检查您放置在该数组中的对象的类型。
要考虑的另一件事 - 您是否试图在每次调用函数时创建按钮数组(例如更改外观主题),或者您是否试图引用一些已经存在的全局按钮?在这种情况下 - 在函数外部声明按钮数组,然后循环遍历函数内部的数组。
如果另一方面 - 您打算仅在调用函数时创建按钮并且它们不存在于全局函数之外,则您将提供有关对象及其类型的更多信息。
在我看来,您在函数外部全局定义了按钮,并且您试图将它们全部存储在一个数组中只是为了循环遍历它们 - 在这种情况下,我建议删除可选的“?”
将按钮存储在函数外部的数组中,并在函数中循环访问数组。 希望有帮助。
关于ios - 当我使用数组时 Xcode 8 永远索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40475632/