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

      Из аэропорта Франкфурт Майн в Раунхайм на электричке
      Из аэропорта Франкфурт Майн в Раунхайм на электричке

      Нужно было давеча попасть в небольшую немецкую деревушку - Раунхайм (Raunheim), расположенную не далеко от аэропорта Франкфурт Майн (EDDF/FRA). Расстояние от терминала вроде бы смешное - всего-то около 10 километров, но использовать такси - как-то не спортивно, пешком - не солидно, в результате было принято решение воспользоваться железнодорожным немецким транспортом. Железнодорожный транспорт в Германии очень...




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

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




      Как разделить текстовый файл построчно и удалить часть строки
      Как разделить текстовый файл построчно и удалить часть строки

      Как разделить текстовый файл построчно на несколько отдельных файлов и удалить часть строки? Бесплатно, без СМС, и без Python! Как-то при тестировании процесса ввода в оборот маркированного товара пришлось иметь дело с большим количеством кодов SGTIN...




      Каналы и частоты TACAN, VOR, LOCALIZER
      Каналы и частоты TACAN, VOR, LOCALIZER

      На всех российских самолетах и на иностранных гражданских воздушных судах по умолчанию нет оборудования TACAN. При заходе на посадку по схеме, например, VOR/TAC или еще хуже - просто TACAN от этого такана бортовое оборудование может получать только информацию по дальности (и то не повсем используемым каналам и частотам), курсового наведения не будет. TACAN (tactical air navigation system) -...




      Методики определения эксплуатационных минимумов
      Методики определения эксплуатационных минимумов

      Каждый эксплуатант (авиакомпания) при выполнении полетов должен тем или иным способом определять эксплуатационные минимумы для взлета и захода на посадку для каждого аэродрома с учетом: наличия/отсутствия/работосопособности системы огней ВПП, функционирования наземных и бортовых навигационных средств, препятствий в районе аэродрома и минимума командира воздушного судна. Эксплуатационные минимумы...




      Как создать корзину на флэшке
      Как создать корзину на флэшке

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




      Как убрать оперу из трея
      Как убрать оперу из трея

      Хоть браузер Опера - гавно, некоторые пользователи сети Интернет им все равно пользуются, в том числе и я. Иногда. Когда проверяю как себя ведет какой-нибудь сайт или скрипт в различных браузерах. В этом случае проверка осуществляется на максимально возможном количестве браузеров: Mozilla Firefox, Chrome, Opera, Safari, Internet Explorer.



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