極端な例ですが、コンソール アプリで、様々な問題は無視して
let ws = MyWebLoader("https://www.example.com/")
print(ws.data!) // データを表示
として、サイトのデータを取得したいときの、MyWebLoader クラスです。
注意: サイトが応答するまで処理がブロックされます
class MyWebLoader {
var sem = DispatchSemaphore(value: 0)
var error: Error?
var response: HTTPURLResponse?
var data: Data?
init(_ string: String) {
let url = URL(string: string)!
let req = URLRequest(url: url)
let task = URLSession.shared.dataTask(with: req) { dat, res, err in
self.error = err
self.response = res as? HTTPURLResponse
self.data = dat
self.sem.signal()
}
task.resume()
sem.wait()
}
}