如何用它自己的完成闭包指向一个任务? 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)
}