@bagos

Можно ли изменять(задавать) значение переменной в функции делегата в Swift?

Добрый день!
Требуется распарсить xml файл, получаемый после авторизации на сервере, затем получить одно значение и передать его в label.
В качестве парсера NSXMLParser, в теле функции делегата parser(_:foundCharacters:) меняю значение label.text на полученное в string. Можно ли так делать? Или вывод в UI должен производится как то иначе? Дело в том что в дебаггере вижу что значение получено сразу, а на форме в label появляется спустя сикунд 5, почему так?
  • Вопрос задан
  • 2418 просмотров
Решения вопроса 1
Flanker_4
@Flanker_4
Насколько мне помнится, NSXMLParser не асинхронный, и если Вы вызываете parse в главном потоке - то установка label пройдет нормально. Но опять же, раз он асинхронный и Вы ему скармливаете жирную xml - он вешает ui шный поток и по этому у вас label (да не только она, а все ui висит) обновляется через время. Вам нужно либо запустить парсер асинхронно (см. примеры stackoverflow.com/questions/2862911/is-nsxmlparser... или использовать другой, более удобный парсер (www.raywenderlich.com/553/xml-tutorial-for-ios-how... NSXMLParser имеет чертовски неудобный интерфейс, как по мне. В своих проектах лично я использую гугловский. Ах да, если все же решите асинхронно вызывать парсер - не забудьте вернуться в ui поток перед установкой label
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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