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

      CTRL F5 для Mac
      CTRL F5 для Mac

      При работе интернет-браузеры сохраняют в кэш много различной информации, которая должна облегчить жизнь пользователя: ускорить загрузку станиц, предугадать его намерения и предложить то, что надо и др. Но иногда нужно часть этих сохраненных данных удалить, чтобы браузер загрузил свежую информацию (например, JS-скрипты). Для этого необходимо ПОЛНОСТЬЮ перезагрузить web-страницу. В пресловутой...




      Как выровнять многострочный UILabel по верхнему краю
      Как выровнять многострочный UILabel по верхнему краю

      Если содержимое UILabel в интерфейсе мобильного приложения может варироваться от одного короткого слова до двух предложений, то нужно немного постараться, чтобы это выглядело адекватно хорошо на различных устройствах с разными экранами. Когда UILabel не имеет фиксированного размера и должен меняеться динамически в зависимости от количества текста в нем, то это делается следующим образом:




      Выборка из БД ARINC424 по любым столбцам
      Выборка из БД ARINC424 по любым столбцам

      Аналогично программе для получения выборки из БД в формате ARINC-424 по коду раздела (5 колонка) и коду подраздела (6 или 13 колонка), данная программа позволяет делать более сложные выборки - с учетом значений любых столбцов базы данных. Программа позволяет сделать любую выборку по заданным пользователем параметрам, точнее по значениям, введенным в любой столбец - хоть во все 132. В приведенном примере сделана выборка из БД -...




      Jeppesen FliteDeck Pro  - версия 2.9.0
      Jeppesen FliteDeck Pro - версия 2.9.0

      Очередное обновление флагманского приложения для EFB - Jeppesen FliteDeck Pro. Как говориться, нет пределов для совершенства, особенно, если это касается авиационного программного обеспечения для Electronic Flight Bag. В приложении Jepp FD Pro версии 2.9 появилась панель управления, совмещенная с рабочим полем приложения (расположена слева).Пилотам больше не нужно переключаться между вкладками – Схемы (Terminal...




      Как изменить размер значков на рабочем столе Windows 7
      Как изменить размер значков на рабочем столе Windows 7

      Слепым эту статью не читать! :) После приобретения нового компьютера или ноутбука с становленной операционной системой Windows 7, а, может быть, просто вместо старого и доброго ХРюши (Windows XP) в неизбежном процессе upgrade на Windows 7 на рабочем столе созерцаем неестественно крупные иконки: Мой компьютер, Корзина,... и др. Так как многие пользователи частенько "заваливают" свой рабочий стол различными ярлыками, папками, файлами,...




      Культ карго
      Культ карго

      На островах Тихого океана местные жители поклоняются самолетам, которые привозят разные ништяки и вкусняшки. А чтобы боги прилетали почаще, строят фальшивые аэродромы с муляжами самолетов, вышек и взлетными полосами.




      Aleesoft’s Free iPad Video Converter
      Aleesoft’s Free iPad Video Converter

      Стандартный видеопроигрыватель iPad признает очень мало форматов видео файлов - только *.mov и *.mp4 (MPEG-4). Есть, конечно, видеопроигрыватели сторонних производителей, которые дружат и с *.avi, и с *.flv, но они, в основном, платные. Поэтому для тех, кто хочет смотреть любимые фильмы на iPad с помощью бесплатного видеопроигрывателя необходима программа конвертации. Для этой цели практически идеально подходит Aleesoft’s Free iPad Video...



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