2016-12-15 81 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]) 
    } 
}