Arrays Swift 2.0阵列初始化
我有一个类(NavBar),它有几个变量,我想把它们放在数组中。我目前收到这个错误 '实例成员buttonOne不能用于NavBar类型' 抛出错误的代码如下所示Arrays Swift 2.0阵列初始化,arrays,swift,Arrays,Swift,我有一个类(NavBar),它有几个变量,我想把它们放在数组中。我目前收到这个错误 '实例成员buttonOne不能用于NavBar类型' 抛出错误的代码如下所示 // Buttons var buttonOne: Button? var buttonTwo: Button? var buttonThree: Button? var buttonFour: Button? var buttonFive: Button? var buttonsArray: [Button] = [buttonOn
// Buttons
var buttonOne: Button?
var buttonTwo: Button?
var buttonThree: Button?
var buttonFour: Button?
var buttonFive: Button?
var buttonsArray: [Button] = [buttonOne, buttonTwo, buttonThree, buttonFour, buttonFive]
不能在值数组中存储可选值。使用
[按钮?]
而不是[按钮]
var buttonsArray: [Button?] = [buttonOne, buttonTwo, buttonThree, buttonFour, buttonFive]
不能在值数组中存储可选值。使用
[按钮?]
而不是[按钮]
var buttonsArray: [Button?] = [buttonOne, buttonTwo, buttonThree, buttonFour, buttonFive]
这个错误说明了一切,您不能将实例变量添加到另一个实例变量(数组)中。您正在寻找的是以下内容:
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]
}
}
这个错误说明了一切,您不能将实例变量添加到另一个实例变量(数组)中。您正在寻找的是以下内容:
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]
}
}
不确定你的基类是什么,但你应该知道。以下设置工作正常:
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:
或其他一些初始化器。不确定您的基类是什么,但您应该知道。以下设置工作正常:
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:
或其他一些初始化器。至少执行Arsen建议的操作。但是,您发布的错误与按钮实例的可选性几乎没有关系。您的代码缺少一些上下文,因此此错误完全有意义。请尝试上载缺少的代码上下文。@Abhinav下面提供了足够的答案。我必须先启动空数组,然后在函数中向数组中添加值。至少按照Arsen的建议执行。但是,您发布的错误与按钮实例的可选性几乎没有关系。您的代码缺少一些上下文,因此此错误完全有意义。请尝试上载缺少的代码上下文。@Abhinav下面提供了足够的答案。我必须首先启动空数组,然后在函数中向数组中添加值。假设问题中的变量都是类的实例变量,这将产生相同的错误。您只解决了一个没有被询问的问题。假设问题中的变量都是一个类的实例变量,这将产生相同的错误。你只解决了一个没有被问到的问题。这是唯一正确回答(并解释)问题中被问到的实际错误的答案。@Abhinav如果你有这种感觉,我将非常感谢你将这个问题标记为一个好问题。这是唯一正确回答(并解释)的答案问题中被问到的实际错误。@Abhinav如果你觉得这个问题是个好问题,我将非常感激。