Задать вопрос
tupoi
@tupoi

Почему XCode не видит переменную?

Доброго времени суток, есть такая проблема, делаю запрос на сервер, получаю ответ в виде JSON, делаю парсинг JSON и сохраняю все это в переменную
Alamofire.request("http://127.0.0.1:8000/api/auditOS/", method: .get).responseJSON { response in
            let jsonParse = JSON(response.result.value!)
            print(jsonParse)
        }

Но дальше эту переменную необходимо использовать, а XCode говорит, что такой переменной не существует, как быть? пробовал обращаться и через self - не помогает, видит он ее только в пределах фигурных скобок с Alamofire запросом, за их пределами сразу кидает ошибку. Буду благодарен за ответ почему так происходит и как решить эту проблему)
  • Вопрос задан
  • 289 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Skyrocker33
Судя по тому, что ты написал, ответ предельно прост: ты объявляешь константу jsonParse внутри замыкания. Внутри замыкания ее и видно. Проблему эту можно решить объявлением переменной (var, вмеcто let) вне функций.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Buick
Потому что здесь асинхронная модель и эту переменную можно использовать только в callback'е, там, где у тебя print.
Грубо говоря, этот callback (скорее всего) выполнится в другом потоке, параллельно тому коду, который после его создания, поэтому если бы тот кодм обращался к этой переменной, то словил бы nil.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы