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)//