【发布时间】:2015-04-09 07:34:53
【问题描述】:
我正在尝试发出 http post 请求, 但该方法在字典被填满之前返回。
如何强制方法等待回调?
func makeRequest()-> [String :AnyObject]{
var ans : [String :AnyObject] = ["response" : "", "data" : "", "error" : ""]
var request = NSMutableURLRequest(URL: NSURL(string: self.url)!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData, timeoutInterval: 5)
if self.jsonIcluded {
var err: NSError?
let req = NSJSONSerialization.dataWithJSONObject(self.data!, options: NSJSONWritingOptions.PrettyPrinted, error: &err)
request.HTTPBody = req
}
request.HTTPMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil
{
println("error=\(error)")
return
}
ans["response"] = response
ans["data"] = data
ans["error"] = error
}
task.resume()
return ans
}
【问题讨论】:
-
不能同步调用吗?
-
在makeRequest的入参中加入补全块,而不是return,在ans["error"]之后调用补全块...
-
谢谢!成功了!
标签: ios swift callback httprequest