我有一个类(NavBar),其中包含一些我想要放在数组中的变量。我目前收到此错误。
'实例成员buttonOne不能用于NavBar类型'
抛出错误的代码如下。
// Buttons
var buttonOne: Button?
var buttonTwo: Button?
var buttonThree: Button?
var buttonFour: Button?
var buttonFive: Button?
var buttonsArray: [Button] = [buttonOne, buttonTwo, buttonThree, buttonFour, buttonFive]
答案 0 :(得分:3)
好吧,错误说明了一切,你不能将实例变量添加到另一个实例变量(Array)中。您正在寻找的是这样的:
class navBar {
var buttonOne: Button?
var buttonTwo: Button?
var buttonThree: Button?
var buttonFour: Button?
var buttonFive: Button?
var buttonsArray : [Button?] = []
func addValues() {
buttonOne = Button()
buttonTwo = Button()
buttonThree = Button()
buttonFour = Button()
buttonFive = Button()
buttonsArray = [buttonOne, buttonTwo, buttonThree, buttonFour, buttonFive]
}
}
答案 1 :(得分:1)
您无法在值数组中存储可选值。使用[Button?]
代替[Button]
var buttonsArray: [Button?] = [buttonOne, buttonTwo, buttonThree, buttonFour, buttonFive]
答案 2 :(得分:0)
不确定你的基类是什么,但你应该明白。以下设置有效:
class Button {}
class MyClass {
var buttonOne: Button?
var buttonTwo: Button?
var buttonThree: Button?
var buttonFour: Button?
var buttonFive: Button?
var buttonsArray: [Button?]
init() {
buttonsArray = [buttonOne, buttonTwo, buttonThree, buttonFour, buttonFive]
}
}
Ad Arsen指出,数组应该是[Button?]
类型来处理选项,数组本身应该用init
方法构造。根据您的基类,这可以是initWithCoder:
或其他一些初始化程序。