我正在尝试构建一个程序,我会定期运行以检查网站是否已更改。它在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()
}
有任何想法吗?谢谢!
好吧,我只是想通了 - 亚历山大的评论是一个巨大的帮助。
我只需要设置一个信号量:
var semaphore = DispatchSemaphore(value: 0)
和运行异步线程后的semaphore.wait()
。在完成处理程序结束时,我把semaphore.signal()
。而已!