Swift 2.0中的回调函数

时间:2015-10-21 14:52:42

标签: swift callback asynccallback

我使用NSURLSession创建了一个函数,需要生成一个回调来接收异步进程的结果。

let task = NSURLSession.sharedSession().dataTaskWithRequest(yourMutableRequest) { 
    data, response, error in
    // do your stuff here
}
task.resume()

如何创建在这种情况下使用的回调函数?谢谢你的回答。

1 个答案:

答案 0 :(得分:3)

您可以创建一个函数来处理请求并返回一个callback / completionHandler,如下所示:

func handler (data: NSData!, response: NSURLResponse!, error: NSError!) {

}

然后按以下方式调用它:

let task = NSURLSession.sharedSession().dataTaskWithRequest(request, 
                                                            completionHandler: handler) 

task.resume()

或者,如果您想要实现的是在另一个函数中使用NSURLSession.sharedSession().dataTaskWithRequest函数并返回其结果,您也可以使用闭包来实现它,如下面的代码所示:

func makeRequest(request: NSURLRequest, completionHandler: (data: NSData!, response: NSURLResponse!, error: NSError!) -> ()) {

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 
            data, response, error in 
                            completionHandler(data: data, response: response, error: error)

    }
}

你可以通过以下方式称呼它:

self.makeRequest(request) { data, response, error in 
    // do what you want here
}

我希望这对你有所帮助。