2015-10-07 101 views
1

我有一個類(NavBar)與我想放在一個數組中的幾個變量。我目前得到這個錯誤。Swift 2.0數組初始化

的代碼引發錯誤是如下「實例構件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

至少做了什麼Arsen建議。但是,您發佈的錯誤勉強與您的Button實例的可選性有關。 –

+0

您的代碼缺少某些上下文,以使此錯誤具有完整意義。 – nhgrif

+0

嘗試上傳缺少的代碼上下文。 –

回答

3

可是錯誤說,這一切,你不能添加實例變量到另一個實例變量(陣列)。你在找什麼是這樣的:

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] 
    } 
} 
+0

這是正確解決(並解釋)在問題中被問到的實際錯誤的唯一答案。 – nhgrif

+0

@Abhinav如果你有這種感覺,我會非常感謝你將這個問題作爲一個很好的問題。 –

+0

是的,我投了! @CodyWeaver – Abhinav

1

您不能在值數組中存儲可選值。使用的[Button?]代替[Button]

var buttonsArray: [Button?] = [buttonOne, buttonTwo, buttonThree, buttonFour, buttonFive] 
+2

假設問題中的變量都是一個類的實例變量,這會產生相同的錯誤。你只能解決一個沒有被問到的問題。 – nhgrif

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] 
    } 
} 

廣告阿爾森指出,該陣列應該是[Button?]類型的處理自選和數組本身應該在你的init方法構建。根據您的基類,這可以是initWithCoder:或其他一些初始化程序。