Значение массива swift append не отображается за пределами оператора

В моем сценарии из моего вызова я получил значения и добавил массив var nameData = [String](). Значения массива nameData не отображаются за пределами оператора. Пожалуйста, проверьте мой код ниже

// Global Declarions
var nameData = [String]()

// GET Call values append
 if let content = result["contacts"] as? [[String:AnyObject]] {
            for category in content {

                self.nameData.append(category["name"] as! String)
            }
            print(self.nameData) // here I am getting
        }
    }
   self.addDropDown()
   print(self.nameData) // Empty array showing

Теперь мой раскрывающийся код ниже, здесь я хочу назначить массив nameData

func addDropDown(){

   print(self.nameData) // Empty array showing why???

        // For Top textField
        let dropDownTop = VPAutoComplete()
        dropDownTop.dataSource =  self.nameData           -->// Here I need to assign nameData values if i do its showing empty values.
        dropDownTop.onTextField = emailTF
        dropDownTop.onView = self.view
        dropDownTop.show { (str, index) in
            print("string : \(str) and Index : \(index)")
            self.emailTF.text = str
        }
}

Как насчет dropDownTop.dataSource = self.nameData

ielyamani 13.09.2018 20:59

внутри функции addDropDown я получаю пустой массив @ Carpsen90. Но внутри категории в содержании {self.nameData.append (category ["name"] as! String)} я могу получить.

user10354805 13.09.2018 21:01

Как вы наполняете nameData? А когда вы исполняете self.nameData.append(category["name"] as! String)?

ielyamani 13.09.2018 21:05

Я обновил свой вопрос, пожалуйста, проверьте один раз, пожалуйста. Как только я получил ответ от вызова GET, я рисую на графике значения имени и добавляю. Проблема во внешнем цикле, я не могу получить добавляемые значения. Отображается пустой массив. @ Carpsen90

user10354805 13.09.2018 21:08

Не могли бы вы: print(self.nameData) непосредственно перед dropDownTop.dataSource = ... и укажите результат в своем вопросе.

ielyamani 13.09.2018 21:15

Я обновил @ Carpsen90 такие же проблемы stackoverflow.com/questions/42486321/…

user10354805 13.09.2018 21:18

Вы не упустили здесь какой-нибудь код импорта? Возможно, ваш цикл for на самом деле находится внутри какого-то обработчика завершения асинхронного выполнения.

rmaddy 13.09.2018 21:35
0
7
211
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуй это:

if let content = result["contacts"] as? [[String:AnyObject]] {
        for category in content {
            self.nameData.append(category["name"] as! String)
        }
        DispatchQueue.main.async { self.addDropDown() } 
    }
}

Добавьте раскрывающийся список сразу после заполнения массива nameData.

вау, он работает, но появились и другие проблемы. Не могли бы вы рассказать мне, как я могу сохранить эти значения в Userdefault и показать их в раскрывающемся списке? @ Carpsen90

user10354805 13.09.2018 21:35
Здесь - несколько примеров
ielyamani 13.09.2018 21:36

отличный чувак. Я нашел еще одно решение для других проблем ... DispatchQueue.main.async {self.addDropDown ()} ..... Спасибо @ Carpsen90

user10354805 13.09.2018 21:39

Рад, что смог помочь @testapp

ielyamani 13.09.2018 21:40

Другие вопросы по теме