2016-12-15 57 views
0

如何從代碼外部打印我的數組。呼叫陣列無法循環

public func buttonNameSetAndColor(){ 
    let buttonNamesAndColor = [button1, button2, button3, button4, button5, button6, button7, button8, button9, button10] 

    var counter = 0 

    for i in 0...9 { 
     var val = NamePicker() 
     buttonNamesAndColor[i]?.setTitle(val, for: .normal) 
     buttonNamesAndColor[i]?.sizeToFit() 

     // array to find duplicates 
     var buttonValues = ["", "", "", "", "", "", "", "", "", ""] // array for button names 
     buttonValues.insert(val, at: counter) 
     counter += 1 
     print(buttonValues[counter]) 
    } 
} 

我的代碼時,每一個被賦予它插入我的buttonValues數組的數組給我buttonNamesAndColor陣列,內部名稱,以我的按鈕。我希望看到該數組在函數外部打印出來。

我想打印出整個數組只是爲了看到1.我可以稱之爲函數之外,2.看它是否存儲所有正確的值。

+0

您沒有提供足夠的信息。如果您有一個填充數組的類的實例方法並將該數組保存爲對象的屬性,則很容易。如果你的函數示例是在局部變量中創建一個數組,那麼只要你從函數返回,該數組就不再存在。您需要顯示數組,它是如何定義的,以及示例函數如何創建它。 –

+0

已更新@DuncanC – Shane

+0

您需要將您的數組聲明爲您的類的屬性,將該聲明移出buttonNameSetAndColor方法 –

回答

0

正如您目前所擁有的,您不能從buttonNameSetAndColor函數外部訪問buttonNamesAndColor陣列。在buttonNameSetAndColor函數結束時,該數組不在範圍內。

以下所有選項都允許您訪問並打印buttonNameSetAndColor功能以外的陣列。

我假設你的button1, button2, etc.UIButton的,但如果它們屬於另一種類型,那麼下面的方法將起作用。

選項1:在您的類/結構中爲該數組創建一個實例屬性。還有其他的變化可以用在這裏,這將取決於你的需求。

class SomeClass { 
    private var buttonNamesAndColor: [UIButton] 

    // or 

    private var _buttonNamesAndColor = [UIButton]() 
    var buttonNamesAndColor: [UIButton] { 
     return _buttonNamesAndColor 
    } 

    // or 

    var buttonNamesAndColor: [UIButton] 

    ... 
} 

選項2:buttonNameSetAndColor函數返回的數組。

public func buttonNameSetAndColor() -> [UIButton] { 
    ... 
} 

方案3:如果button實例是值類型。以inout參數的形式傳遞數組。傳遞給該函數的數組的任何突變都將持續超出函數的範圍。

public func buttonNameSetAndColor(_ array: inout [Button]) { 
    ... 
} 

此選項會喜歡的東西被稱爲:

var buttonNamesAndColor = [button1, button2, button3] // Note "var" instead of "let" 
buttonNamesSetAndColor(&buttonNamesAndColor) // Note "&" symbol 

方案4:如果button實例是引用類型,那麼你可以在陣列傳遞到您的buttonNameSetAndColor功能,而不inout

public func buttonNameSetAndColor(_ array: [UIButton]) { 
    ... 
} 

這將這樣來使用:

var buttonNamesAndColor = [button1, button2, button3] // Note "var" instead of "let" 
buttonNamesSetAndColor(buttonNamesAndColor) 
0
public func buttonNameSetAndColor(){ 

    let buttonNamesAndColor = [button1, button2, button3, button4, button5, button6, button7, button8, button9, button10] 

    var counter = 0 
    var buttonValues = ["", "", "", "", "", "", "", "", "", ""] // array for button names 

    for i in 0...9 { 
     var val = NamePicker() 
     buttonNamesAndColor[i]?.setTitle(val, for: .normal) 
     buttonNamesAndColor[i]?.sizeToFit() 

     // array to find duplicates 
     buttonValues.insert(val, at: counter) 
     counter += 1 
     print(buttonValues[counter]) 
    } 
}