【发布时间】:2022-01-14 05:50:07
【问题描述】:
我想做一个通用的 HTTP 请求函数。我看到的代码不会将数据返回给调用者。相反,它会在函数中打印出错误代码或解析的 JSON 对象。就我而言,我想将(数据、响应、错误)返回给调用者。
func performHTTPRequest(urlString: String) -> (Data, URLResponse, Error) {
if let url = URL(string: urlString) {
let session = URLSession(configuration: .default)
let task = session.dataTask(with: url) {(data, response, error) in
// some logic
}
task.resume()
}
}
问题是三个变量(数据、响应、错误)在闭包之外不可用。如果我将它们分配给闭包内的全局变量,编译器会抱怨全局变量不在范围内。
另外,我应该将返回(数据、响应、错误)语句放在哪里?在 task.resume() 之前还是之后?谢谢
【问题讨论】:
-
你想使用异步版本的 URLSession 的数据任务。