Lê *_*inh 2 ios nsurlsession swift
大家好我即将URLSession在swift 3中创建一个扩展来创建同步和异步请求.这是我的实施
extension URLSession {
func sendSynchronousRequest(request: URL, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) {
let semaphore = DispatchSemaphore(value: 0)
let task = self.dataTask(with: request) { (data, response, error) in
completionHandler(data,response,error)
semaphore.signal()
}
task.resume()
semaphore.wait(timeout: .distantFuture)
}
func sendAsynchronousRequest(request: URLRequest, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask {
let task = self.dataTask(with: request) { data, response, error in
completionHandler(data, response, error)
}
task.resume()
return task
}
}
Run Code Online (Sandbox Code Playgroud)
我有Xcode建议我将@escaping插入到函数中.不知道实施是否正确
有谁知道如何纠正扩展?帮助非常感谢!谢谢!
小智 11
我发现这个实现但在swift1/2中不记得了.这不是我自己的.但我在swift3中重写了它.我只是不记得我在哪里找到它:/
func synchronousDataTaskWithURL(url: URL) -> (Data?, URLResponse?, Error?) {
var data: Data?, response: URLResponse?, error: Error?
let semaphore = DispatchSemaphore(value: 0)
dataTask(with: url) {
data = $0; response = $1; error = $2
semaphore.signal()
}.resume()
semaphore.wait()
return (data, response, error)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3086 次 |
| 最近记录: |