Swift 2.0数组初始化

时间:2015-10-07 12:08:27

标签: arrays swift

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

3 个答案:

答案 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:或其他一些初始化程序。