Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Swift 2.0阵列初始化_Arrays_Swift - Fatal编程技术网

Arrays Swift 2.0阵列初始化

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

我有一个类(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]

不能在值数组中存储可选值。使用
[按钮?]
而不是
[按钮]

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如果你觉得这个问题是个好问题,我将非常感激。