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

Мой код дают имена моих кнопок внутри моего buttonNamesAndColor массива, когда каждый из них задается массив он вставлен в мой массив buttonValues. Я хотел бы видеть, что массив напечатан вне функции.

Я хотел бы распечатать весь массив, чтобы увидеть, что 1. Я могу вызывать его вне функции и 2. видеть, что он хранит все правильные значения.

+0

Вы не предоставили достаточно информации. Если у вас есть метод экземпляра класса, который заполняет массив и сохраняет массив как свойство объекта, это легко. Если ваш пример функции создает массив в локальной переменной, то этот массив перестает существовать, как только вы вернетесь из функции. Вам нужно показать массив, как он определен и как создается его функция-пример. –

+0

обновлено @DuncanC – Shane

+0

вам нужно объявить свой массив как свойство вашего класса, переместить объявление из метода buttonNameSetAndColor –

ответ

0

Поскольку у вас есть это, вы не можете получить доступ к массиву buttonNamesAndColor вне функции buttonNameSetAndColor. В конце функции 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]) 
    } 
} 
Смежные вопросы