Быстрое общение за пределами игровой площадки или проекта? - PullRequest
0 голосов
/ 29 августа 2018

Я пытался создать программу, которую я бы регулярно запускал, чтобы проверить, изменился ли веб-сайт. Это работает в Swift Playgrounds, однако, если я пытаюсь просто скопировать его в файл .swift и затем запустить его непосредственно в терминале, он не возвращает ответ. На самом деле, похоже, он ничего не делает.

Вот мой код:

func getSite(website: String) {
    let url = URL(string: website)!
    let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
        if error != nil {
            print(error?.localizedDescription)
        } else {
            if let data = data, let host = response?.url?.host, let scheme = response?.url?.scheme {
                print("Retrieved data from \(host) over \(scheme)...")
                let site = String(data: data, encoding: .utf8)
                print(site)
            }
        }
    }
    task.resume()
}

Есть идеи? Спасибо!

1 Ответ

0 голосов
/ 29 августа 2018

Хорошо, я только что понял - комментарий Александра очень помог.

Мне просто нужно настроить семафор:

var semaphore = DispatchSemaphore(value: 0)

и semaphore.wait() сразу после запуска асинхронного потока. В конце обработчика завершения я поставил semaphore.signal(). Вот и все!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...