Почему я не получаю ответ от запроса URL в приложении командной строки XCode - PullRequest
0 голосов
/ 03 марта 2019

У меня проблема в Xcode с использованием swift.Я пытался получить данные с веб-страницы, используя URL-запросы в Swift.В обработчике завершения DataTask я попытался распечатать данные.Это прекрасно работает в приложении какао после включения произвольных загрузок в файле info.plist.Но когда я пытаюсь сделать то же самое в приложении командной строки, кажется, что обработчик завершения ничего не делает.Терминал даже не появляется после строительства.Может кто-нибудь сказать мне, что мне не хватает?

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Скорее всего ваша утилита командной строки завершила рано.Чтобы избежать этого, есть несколько разных возможностей.Один из наиболее распространенных использует dispatchMain (), который никогда не возвращается, и утилита командной строки должна быть остановлена ​​«программно»

, поместите это в main.swift и попробуйте: -)

import Foundation

print("----------- init request -----------")
DispatchQueue.main.async {
    if let url = URL(string: "https://code-maven.com/try/examples/html/hello_world_html5.html") {
        do {
            let contents = try String(contentsOf: url)
            print(contents)
        } catch {
            fatalError("contents could not be loaded")
        }
        exit(0)
    } else {
        fatalError("the URL was bad!")
    }
}
print("---------- continue execution ------")
dispatchMain()
0 голосов
/ 03 марта 2019

Создать семафор, чтобы заблокировать текущий поток.Дождитесь окончания сеанса URL.От обработчика завершения подайте сигнал семафору.

...