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)
Поделитесь своим местоположением

      Человеческий фактор
      Человеческий фактор

      Когда-то пилотов гражданской авиации воспринимали как героев. Сегодня постоянное стремление обеспечить все более высокий уровень безопасности привело к созданию самолетов, которые по большому счету могут летать без непосредственного участия человека. Именно поэтому катастрофа самолёта Airbus A330-203 (рейс AF447 авиакомпании Air France) в 2009 году, унесшая жизни 228 человек и ставшая знаковым...




      Установка SSL-сертификата на MDM-сервер Apple
      Установка SSL-сертификата на MDM-сервер Apple

      Для полноценной работы по администрированию мобильных устройств Apple с помощью MDM-сервера (Profile Manager) очень желательно использовать SSL-сертификат, выданный авторизованным центром сертификации. Можно, конечно, использовать и самоподписанный сертификат, созданный с помощью самого MDM-сервера - часть задач он будет решать. Но, тем не менее, будут некоторые ограничения, не позволяющие легко и просто управлять...




      Код зоны покрытия для Jepp View, eLink и Flite Deck
      Код зоны покрытия для Jepp View, eLink и Flite Deck

      При обновлении программы Jepp View иногда может понадобиться код зоны покрытия навигационной БД (coverage code). В течение последних нескольких лет Jeppesen программирует и выдает своим клиентам такие серийные номера для программ при последующих обновлениях которых не нужно вводить coverage code - он уже не нужен, т.к. программа установки обновления автоматически его считывает в системе на...




      Фразы про ЛИЦО (FACE)
      Фразы про ЛИЦО (FACE)

      Выражения, в которых используется слово ЛИЦО (face), использование их в повседневной речи и сравнение с русскими аналогами.   1. FACE THE MUSIC (досл.: «встретить музыку») По-русски это означает: держать ответ за что-либо, расплачиваться, "расхлёбывать кашу".Пример: You’ve made a mistake; now you’ll have to face the music.Ты совершил ошибку, теперь тебе придется за нее расплачиваться.




      Как установить локаль для PHP
      Как установить локаль для PHP

      Для каждого php-приложения очень желательно жестко настроить локаль, чтобы не зависеть от настроек сервера. Иначе, по "закону подлости" - в самый неподходящий момент могут возникнуть проблемы с отображением данных. Причем, "артефакты" могут вылезти не только после переезда/миграции на другой сервер, но и даже как будто вообще без причины. Как раз подобный случай и произошел недавно с одним...




      Висит получение IP-адреса
      Висит получение IP-адреса

      Железо: нетбук Lenovo ~ 2010 года выпуска. Операционная система: Windows XP. Описание проблемы: при попытке подключения к сети Wi-Fi агент беспроводной сети нетбука не запрашивает пароль (а он фактически имеется), а сразу пытается подключиться. При этом постоянно отображается "Получение IP-адреса", и подключения фактически не происходит, доступа к сети Интернет нет.




      Как добавить кнопку +1 от Google на сайт
      Как добавить кнопку +1 от Google на сайт

      Кнопка +1 позволяет людям, которым понравился ваш сайт, рекомендовать его друзьям и знакомым прямо в поиске Google. Кнопка "+1" помогает пользователям узнавать о веб-сайтах, результатах поиска Google или об объявлениях от тех, кому они доверяют. Добавляя кнопку "+1" на свои страницы, вы предоставляете посетителям возможность рекомендовать их друзьям и контактам. Эти рекомендации будут показаны в наиболее...



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