xCode - UIKeyboardTaskQueue may only be called from the main thread

Если xCode при компиляции проекта ругается на часть кода и выдает ошибку, например, такую: 

 

Thread 4: Exception: -[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread.

 

Это означает, что данный кусок кода должен выполняться в главном потоке, а не в дополнительном.

Для исправления ситуации нужно поместить этот кусок кода внутрь блока DispatchQueue.main.async.

Так:

DispatchQueue.main.async(execute: {
// здесь вставить свой код
 })

 Или (сокращенный вариант) так:

DispatchQueue.main.async {

                    // здесь вставить свой код

                }

 

 Пример:

 

            do {

                let json = try JSONSerialization.jsonObject(with: data, options: [])

                                

                let myRequest = try JSONDecoder().decode(MyRequest.self, from: data)

        

        // токен и имя тогда можно получить так:

                var myToken = myRequest.token

                var myName = myRequest.callsign

                

        // отобразить Username и токен в интерфейсе (для отладки):

                DispatchQueue.main.async(execute: {

                    self.usernameLabel.text = String(myName)

                    self.tokenLabel.text = String(myToken)

                })

                                

            } catch {

                // модальное окно - если не верные логин-пароль:

                DispatchQueue.main.async {

                    let modalWindow = UIAlertController(title: "Login Error", message: "Username or password is wrong :( ", preferredStyle: .alert)

                    let okButton = UIAlertAction(title: "Close", style: .default) {

                        (ACTION) -> Void in

                    }

                    modalWindow.addAction(okButton)

                    self.present(modalWindow, animated: true, completion: nil)

                }

               

            }

         

Комментарии (0)

Здесь не опубликовано еще ни одного комментария

Оставьте свой комментарий

  1. Опубликовать комментарий как Гость.
0 Значки
Вложения (0 / 3)
Поделитесь своим местоположением

      Как выровнять многострочный UILabel по верхнему краю
      Как выровнять многострочный UILabel по верхнему краю

      Если содержимое UILabel в интерфейсе мобильного приложения может варироваться от одного короткого слова до двух предложений, то нужно немного постараться, чтобы это выглядело адекватно хорошо на различных устройствах с разными экранами. Когда UILabel не имеет фиксированного размера и должен меняеться динамически в зависимости от количества текста в нем, то это делается следующим образом:




      Как настроить Wi-Fi Router DLINK DIR-300 NRU B5 под Билайн
      Как настроить Wi-Fi Router DLINK DIR-300 NRU B5 под Билайн

      В мае 2011 года я написал и разместил на сайте статью "Как настроить Wi-Fi Router DLINK DIR-300 NRU под Билайн". Писал этот мануал в первую очередь для себя, чтоб качественная шпаргалка всегда была под рукой. Со временем статью немного дополнил и откорректировал в соответствии с новой информацией и фактическим опытом настройки данного типа рутеров. Чуть более чем за полгода эта статья была просмотрена 35 тысяч раз, к ней было написано 5 страниц комментариев к статье: как благодарных, так и...




      Программа для пересчета координат СК-42 - WGS-84
      Программа для пересчета координат СК-42 - WGS-84

      Как гласит библейская легенда (не смотря на то, что в ней множество нестыковок, как и во всей библии - по мнению французского писателя Лео Таксиля), что при строительстве Вавилонской башни произошло нечто, и все люди стали говорить на разных языках - и из-за этого башню не удалось построить. Так и в авиации до сих пор существуют атавизмы - различные геодезические модели земного шара,...




      Циклы обновления навигационных БД Garmin на 2016-2017
      Циклы обновления навигационных БД Garmin на 2016-2017

      Компания Garmin вполне заслуженно и, поэтому, весьма уверенно уже много лет сохраняет статус лидера в области авиационных навигаторов (как портативных, так и стационарных) для авиации, кораблей и автомобилей. А тесное сотрудничество с Jeppesen и GIS-организациями дает преимущество в плане создания баз данных. На этой странице содержится информация о циклах обновления навигационных БД Garmin на 2016...




      Как убрать рекламу в uTorrent
      Как убрать рекламу в uTorrent

      Начиная с версии какой-то 3.xxxx в программе uTorrent появилась реклама. Причем, реклама довольно агрессивная - даже в те минуты, а иногда - секунды, когда программа uTorrent не свернута в трей, ее реклама успевает надоесть. Хорошо, что разработчики приложения uTorrent дали возможность пользователям программы через настройки отключить рекламу.




      Гаджеты для iPad
      Гаджеты для iPad

      Пользователи, имеющиие iPad рано или поздно сталкиваются с необходимостью расширить функционал устройства, так нещадно ограниченный яблоневодами. К их сожалению (да и к моему тоже) список дополнительных девайсов для яблочных огрызков весьма мал, зато стоимость зато весьма высока. Напрягает отсутствие полноценного USB-подключеия и файлового менеджера. Хоть разработчики и утверждают, что при...




      Признаки принадлежности аэродрома
      Признаки принадлежности аэродрома

      В некоторых авиационных справочниках (онлайн или установленных отдельных приложений) по аэродромам есть такой параметр - "Признак принадлежности аэродрома" ("aerodrom usage attribute"), который и определяет эту принадлежность.Помимо общеизвестных признаков принадлежности аэродрома - военные, гражданские и совместного базирования, существует еще несколько. Они малораспространены, но иногда...



Яндекс.Метрика
Сайт работает на быстром VPS/VDS хостинге от FASTVPS