如何用它自己的完成闭包指向一个任务? ios swift
How to point to a task with it's own completions closure ? ios swift
我正在使用任务发送请求,这样:
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
dispatch_async(dispatch_get_main_queue(), {
//remove from queue
weakself?.popTask(task: task)
}
}
self.pushTask(task)
task.resume()
我需要在恢复之前将任务推入队列。然后我需要在它完成后弹出它。我得到这个错误的问题:在它自己的初始值中使用的变量
我该怎么办?
是否可以创建一个任务,然后设置它的完成处理程序?
谢谢
我认为你是正确的,完成块不能引用任务,因为它还没有被创建。
就是这个意思:
variable used within it's own initial values
要解决这个问题,只需在设置常量之前声明常量即可。例如
let task: NSURLSession
task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
dispatch_async(dispatch_get_main_queue(), {
//remove from queue
weakself?.popTask(task: task)
}
我正在使用任务发送请求,这样:
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
dispatch_async(dispatch_get_main_queue(), {
//remove from queue
weakself?.popTask(task: task)
}
}
self.pushTask(task)
task.resume()
我需要在恢复之前将任务推入队列。然后我需要在它完成后弹出它。我得到这个错误的问题:在它自己的初始值中使用的变量
我该怎么办? 是否可以创建一个任务,然后设置它的完成处理程序?
谢谢
我认为你是正确的,完成块不能引用任务,因为它还没有被创建。
就是这个意思:
variable used within it's own initial values
要解决这个问题,只需在设置常量之前声明常量即可。例如
let task: NSURLSession
task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
dispatch_async(dispatch_get_main_queue(), {
//remove from queue
weakself?.popTask(task: task)
}