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

      Международный авиационный алфавит
      Международный авиационный алфавит

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




      Ширитон Виталий Иванович - биографический очерк
      Ширитон Виталий Иванович - биографический очерк

      Ширитон Виталий Иванович - полковник ВВС, летал на Л-29, Л-39, МИГ-17, МИГ-21. С 1978 по 1984 годы был командиром полка 809 УАП (в/ч 19109) Харьковского высшего военного авиационного училища летчиков. При нем летный состав впервые в истории части освоил полеты в сложных метеоусловиях при первом минимуме погоды с использованием СДУ и боевое применение по наземным целям с практической стрельбой неуправляемыми...




      Ошибки Jeppesen FD PRO
      Ошибки Jeppesen FD PRO

      17 октября программа Jeppesen FD PRO получила одобрение от EASA (European Aviation Safety Agency) как програмный продукт для EFB. Одновременно с программой Jeppesen FD PRO была одобрена (сертифицирована) программа Jeppesen TC PRO.




      Mapsme VS Google Maps
      Mapsme VS Google Maps

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




      Как добавить свой CSS-класс в редактор TinyMCE в Joomla
      Как добавить свой CSS-класс в редактор TinyMCE в Joomla

      Многие создатели сайтов на Joomla используют собственные классы для различных объектов CSS. Это могут быть классы, например, для таблиц или изображений. Начиная с Joomla версии 2.5 эта популярная CMS использует поддержку технологии "Lightbox", и теперь для получения этого эффекта не нужно устанавливать сторонние расширения, все уже реализовано в самом движке Joomla, достаточно только в редакторе...




      Установка IBM MQ на LINUX Debian x64
      Установка IBM MQ на LINUX Debian x64

      Передача информации из одной системы в другую с помощью очередей (Queues) считается самым недёжным вариантом, не даром, очереди часто используются в банковской сфере. Данный функционал может быть реализован с помощью любой из технологий: IBM MQ, Rabbit MQ, Apache Active MQ и др. Некоторые решения являются платными (IBM MQ), некоторые - бесплатными. IBM MQ по  моему мнению является самой крутой...




      Перепрошивка навигаторов Garmin
      Перепрошивка навигаторов Garmin

      Несколько раз в сети попадалась информация по перепрошивке GPS-навигаторов Garmin. В том числе и про превращение бытового навигатора Garmin 276 (и его модификаций) в полноценный авиационный навигатор Garmin 296. Не зря говорят, что "Голь на выдумку хитра!", и многие пытаются сэкономить на приобретении полноценного прибора. По неофициальной информации элементная база Garmin 276 и 296 одна и та же....



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