Если 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)
}
}
Как-то на одном из web-ресурсов одному товарищу попалась коллекция редких видеороликов, которые, как показало исследование страницы сайта, были загружены в конкретную директорию на том самом сайте и имели однотипные названия файлов. И этот товарищ захотел скачать эти видеоролики на свой компьютер, чтобы ознакомиться с их содержимым в более спокойной обстановке и без интернета (в самолете во...
Формат навигационных баз данных ARINC 424 существует аж с 1975 года, за это время он довольно сильно эволюционировал в сторону наполнения новыми типами данных, но основной "скелет" этой базы данных, описанный в 424-ой спецификации, остался практически без изменений. База данных в формате ARINC 424 представляет собой текстовый файл, в котором построчно закодированы аэронавигационные данные: воздушные...
EXIM - удобная штука и очень хорошая альтернатива Postfix (была как-то давно возможность сравнить). EXIM (EXperimental Internet Mailer) — агент пересылки сообщений, используется в операционных системах семейства Unix. Exim придерживается дизайна древнейшего почтового агента - sendmail, где один процесс контролирует всю работу MTA (Mail Transfer Agent), короче, он тоже монолит :)
Существует множество программ для сравнения текстовых файлов типа TXT, DOC и т.п. Такие программы могут легко сравнить два файла и отобразить в отчете все различия: что было удалено, что было добавлено, а что не было отредактировано и осталось без изменения. Программами для сравнения файлов часто пользуются программисты, составители различных инструкций, ТЗ и др. документации, которым приходится периодически...
Во-первых, зачем это может понадобиться? Представьте ситуацию: корпоративные сайт со специфическими задачами, количество пользователей - до нескольких сотен человек. Регистрацию этих пользователей выполняет администратор сайта, самостоятельная регистрация на сайте специально отключена, чтобы отсечь чужих. Для того, чтобы администратору не нужно было создавать множество почтовых ящиков, на...
Новый комп с установленной операционной системой MS Windows 10 Pro (система практически девственно чистая :). Java установлена. Graphviz установлен. Свежая установка программы Microsoft Visual Studio Code. В Visual Studio Code установлен компонент - PlantUML by Jebbs, но он не отображает диаграммы! Никакие. Совсем. Даже не пытается, никакие ошибки не отображаются.
Очень просто - нажать CMD + ALT + ESCили CMD + Option + ESC В яблочной операционной системе нет как такового диспетчера задач, но имеется его упрощенный аналог - "Принудительное завершение программ".