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

      Программа Qloud для пилотов Qatar Airways
      Программа Qloud для пилотов Qatar Airways

      Авиакомпания Qatar Airways начала внедрение собственного нового приложения для iPad - Qloud. Это мобильное приложение собственной разработки, предназначенное только для использования внутри компании (так называемое Inhouse Application). Программа Qloudбудет обеспечивать всех пилотов авиакомпании Катар Эйрвэйс в режиме реального времени актуальной информацией в том числе - и для принятия решения.




      Mapsme VS Google Maps
      Mapsme VS Google Maps

      В настоящее время имеется большое разнообразие программ для навигации: Mapsme, Яндекс.Навигатор, Sygic, Навител, Copilot, Magic Earth, iGo, TomTom Go и множество других приложений. Наиболее популярные версии - для iOS и для Android, для других платформ (например, Windows) не каждый производитель делает приложение. Разные пользователи выбирают и используют различные приложения для навигации - кому какие...




      Номер версии iOS-приложения и сборки в Swift
      Номер версии iOS-приложения и сборки в Swift

      Отображение номера версии iOS-приложения в интерфейсе программы считается хорошим тоном, ибо пользователь должен иметь возможность легко, быстро и просто узнать его для каждого установленного приложения. Если у приложения также указывается номера билда (номер сборки), то его тоже нужно отображать для полной картины. Соответственно, номера приложения и сборки (при необходимости) нужно показывать в каком-то месте...




      Сертификат безопасности аккумулятора Apple iPad
      Сертификат безопасности аккумулятора Apple iPad

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




      SQL-задачка от Яндекса
      SQL-задачка от Яндекса

      Один товарищ рассматривал вариант устроиться на работу в Яндекс на вакансию "Асессор-разработчик". В тестовом задании была задачка на составление SQL-запроса.




      Фразы про ЧАСТИ ТЕЛА (BODY PARTS)
      Фразы про ЧАСТИ ТЕЛА (BODY PARTS)

      В очередной раз откроем словарик и начнем удивляться смыслу перевода некоторых английских фраз и выражений. Что поделать? - Сленг! Вот вам выражения, в которых используются части человеческого тела (BODY PARTS), использование их в повседневной английской речи и сравнение с русскими аналогами. 1. TO LEND SMB A HAND (досл. «одалживать руку»). По-русски это означает: помогать кому-либо.Пример: This...




      JeppView против Аэропорт Оптима
      JeppView против Аэропорт Оптима

      Всем давно известно, что американская фирма Jeppesen является лидером в области аэронавигационных данных, будь то чисто навигационные данные (ARINC-424 и пр.), данные по препятствиям или различные авиационные компьютерные приложения. Другие поставщики аэронавигационных продуктов тоже стараются и создают свои варианты. Давайте сравним как-бы аналогичные продукты от Jeppesen и от ФГУП ЦАИ (бывшее ЦАИ ГА).



Яндекс.Метрика