Ios NSURLSessionDataTask不从请求返回数据

Ios NSURLSessionDataTask不从请求返回数据,ios,xcode,swift,nsurlconnection,Ios,Xcode,Swift,Nsurlconnection,我正在尝试向服务器发出请求,服务器应该返回我可以在应用程序的其余部分中使用的数据。这是我的密码: func makeNewUser() -> NSDictionary { var full_url = getFullUrl("makeNewUser") var toReturn: NSDictionary = NSDictionary() var request: NSURLRequest = NSURLRequest(URL:full_url) let c

我正在尝试向服务器发出请求,服务器应该返回我可以在应用程序的其余部分中使用的数据。这是我的密码:

func makeNewUser() -> NSDictionary {
    var full_url = getFullUrl("makeNewUser")
    var toReturn: NSDictionary = NSDictionary()
    var request: NSURLRequest = NSURLRequest(URL:full_url)
    let config = NSURLSessionConfiguration.defaultSessionConfiguration()
    let session = NSURLSession.sharedSession()
    let task : NSURLSessionDataTask = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
        println(response)
        var err: NSError?

        var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
        if(err != nil) {
            // If there is an error parsing JSON, print it to the console
            println("JSON Error \(err!.localizedDescription)")
        }
        toReturn = jsonResult
    });
    task.resume()
    self.delegate?.didReceiveAPIResults(toReturn)
    println(toReturn)
    return toReturn
}

我正在向调用者中的委托函数发送toReturn数据,但它不可用。我相信这是因为请求是异步的。对于我来说,什么是正确的处理方法,以便调用者知道在继续之前等待此数据?

将代理调用移动到会话完成块中:

func makeNewUser() {
    var full_url = getFullUrl("makeNewUser")
    var toReturn: NSDictionary = NSDictionary()
    var request: NSURLRequest = NSURLRequest(URL:full_url)
    let config = NSURLSessionConfiguration.defaultSessionConfiguration()
    let session = NSURLSession.sharedSession()
    let task : NSURLSessionDataTask = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
        println(response)
        var err: NSError?

        var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
        if(err != nil) {
            // If there is an error parsing JSON, print it to the console
            println("JSON Error \(err!.localizedDescription)")
        }
        self.delegate?.didReceiveAPIResults(jsonResult)   // <<-----
    });
    task.resume()
}
func makeNewUser(){
var full_url=getFullUrl(“makeNewUser”)
var toReturn:NSDictionary=NSDictionary()
var请求:NSURLRequest=NSURLRequest(URL:完整URL)
let config=NSURLSessionConfiguration.defaultSessionConfiguration()
let session=NSURLSession.sharedSession()
让task:NSURLSessionDataTask=session.dataTaskWithRequest(请求,completionHandler:{(数据,响应,错误)位于
println(响应)
变量错误:n错误?
var jsonResult=NSJSONSerialization.JSONObjectWithData(数据,选项:NSJSONReadingOptions.MutableContainers,错误:&err)作为NSDictionary
如果(错误!=nil){
//如果解析JSON时出错,请将其打印到控制台
println(“JSON错误\(err!.localizedDescription)”)
}
self.delegate?.diReceiveAPIResults(jsonResult)//