Если 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)
}
}
При работе интернет-браузеры сохраняют в кэш много различной информации, которая должна облегчить жизнь пользователя: ускорить загрузку станиц, предугадать его намерения и предложить то, что надо и др. Но иногда нужно часть этих сохраненных данных удалить, чтобы браузер загрузил свежую информацию (например, JS-скрипты). Для этого необходимо ПОЛНОСТЬЮ перезагрузить web-страницу. В пресловутой...
Если содержимое UILabel в интерфейсе мобильного приложения может варироваться от одного короткого слова до двух предложений, то нужно немного постараться, чтобы это выглядело адекватно хорошо на различных устройствах с разными экранами. Когда UILabel не имеет фиксированного размера и должен меняеться динамически в зависимости от количества текста в нем, то это делается следующим образом:
Аналогично программе для получения выборки из БД в формате ARINC-424 по коду раздела (5 колонка) и коду подраздела (6 или 13 колонка), данная программа позволяет делать более сложные выборки - с учетом значений любых столбцов базы данных. Программа позволяет сделать любую выборку по заданным пользователем параметрам, точнее по значениям, введенным в любой столбец - хоть во все 132. В приведенном примере сделана выборка из БД -...
Очередное обновление флагманского приложения для EFB - Jeppesen FliteDeck Pro. Как говориться, нет пределов для совершенства, особенно, если это касается авиационного программного обеспечения для Electronic Flight Bag. В приложении Jepp FD Pro версии 2.9 появилась панель управления, совмещенная с рабочим полем приложения (расположена слева).Пилотам больше не нужно переключаться между вкладками – Схемы (Terminal...
Слепым эту статью не читать! :) После приобретения нового компьютера или ноутбука с становленной операционной системой Windows 7, а, может быть, просто вместо старого и доброго ХРюши (Windows XP) в неизбежном процессе upgrade на Windows 7 на рабочем столе созерцаем неестественно крупные иконки: Мой компьютер, Корзина,... и др. Так как многие пользователи частенько "заваливают" свой рабочий стол различными ярлыками, папками, файлами,...
На островах Тихого океана местные жители поклоняются самолетам, которые привозят разные ништяки и вкусняшки. А чтобы боги прилетали почаще, строят фальшивые аэродромы с муляжами самолетов, вышек и взлетными полосами.
Стандартный видеопроигрыватель iPad признает очень мало форматов видео файлов - только *.mov и *.mp4 (MPEG-4). Есть, конечно, видеопроигрыватели сторонних производителей, которые дружат и с *.avi, и с *.flv, но они, в основном, платные. Поэтому для тех, кто хочет смотреть любимые фильмы на iPad с помощью бесплатного видеопроигрывателя необходима программа конвертации. Для этой цели практически идеально подходит Aleesoft’s Free iPad Video...