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

      Глюки iPad. Экран сам работает
      Глюки iPad. Экран сам работает

      Новый планшет iPad mini, купленный в Америке, почти сразу при эксплуатации начал себя плохо вести - периодически он жил своей жизнью: менял масштаб экрана, запускал приложения, переходил по ссылкам в браузере, набирал текст на виртуальной клавиатуре... Его владелец - любитель мистики и эзотерики - относил этот глюк к вмешательству потусторонних сил, как, помните, в фильме Джерри Цукера...




      Установка расширения MQ для PHP – mqseries
      Установка расширения MQ для PHP – mqseries

      Чтобы работать с очередями IBM MQ с помощью PHP, необходимо установить библиотеку для PHP - mqseries. В настоящее время самая актуальная библиотека mqseries имеет версию 0.15.0 (beta) от 14 июля 2017. Предварительно необходимо установить IBM WebSphereMQ.   Исходные данные: - виртуальный сервер с установленной операционной системой Linux Debian 10 x64; - панель управления сервером ISP Manager Lite 5. - нативная...




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

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




      Как восстановить флэшку с файловой системой RAW
      Как восстановить флэшку с файловой системой RAW

      Если ваша любимая флэшка в один "прекрасный" день отказывается работать, а именно при попытке открыть ее выдает сообщение: "Нет доступа к К:\ (или другая буква, присвоенная флэшке) Файл или папка повреждены. Чтение невозможно." И нет возможности ни скопировать файлы с флэшки, ни сделать что-то другое. Если открыть Мой компьютер и кликнуть на букве флэшки правой кнопкой мыши и посмотреть свойства, то увидим, что файловая...




      Использование PowerShell для работы с навигационными базами данных в формате ARINC 424
      Использование PowerShell для работы с навигационными базами данных в формате ARINC 424

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




      Что находится с противоположной стороны Земли?
      Что находится с противоположной стороны Земли?

      В одной из игр КВН - это был финал Высшей лиги КВН в  2003 году, выступала сборная Пятигорска со СТЭМом "Репка", и сюжет был следующим: некие жители России тянули репку, и у них это поначалу было не очень результативно, так как типа того с другой стороны планеты ту же самую рупку тянули американцы :))) Потом с помощью русской смекалки и из-за "шаблонного мышления американцев" наши герои, наконец-то...




      Авиационный анекдот про Икею
      Авиационный анекдот про Икею

      Взлетает самолет с аэродрома Москва Внуково (UUWW/VKO) с ВПП 06. (Практически по курсу взлета с ВПП 06 на удалении приблизительно 11 км от торца находится магазин ИКЕА). В наборе высоты вдруг отказывают все двигатели. Второй пилот: - У нас отказ всех двигателей!



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