var arrayData: [String] = []
let bodyData = "parameter=test"
let URL: NSURL = NSURL(string: "Link to php file")
let request:NSMutableURLRequest = NSMutableURLRequest(URL:URL)
request.HTTPMethod = "POST"
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding);
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue())
{
(response, data, error) in
var output = NSString(data: data, encoding: NSUTF8StringEncoding)
self.arrayData = self.JSONParseArray(output)
println(self.arrayData) //Print the result
}
println(self.arrayData) //Print nothing看起来,新值仅在sendAsynchronousRequest中可用。
是否有一种方法可以使sendAsynchronousRequest中的新值可访问?
发布于 2014-08-27 16:16:51
顾名思义,sendAsynchronousRequest是异步的。因此,您的最后一个println在请求完成之前运行。完成处理程序运行后,所有阅读器(在此处理程序内或之外)都可以使用新的数据。
发布于 2014-08-27 16:17:02
sendAsynchronousRequest需要一个作为参数传递的回调,该回调在异步请求完成后执行。这超出了代码中的线性流。
这就是发生的事情:
sendAsynchronousRequestprintln行(代码中的最后一行)self.arrayData分配一个值如果要使用更新的值,则必须稍微更改逻辑。您可以调用另一个闭包或一个类方法(意味着一个实例方法,而不是静态方法),以便在设置变量后发布该变量。
https://stackoverflow.com/questions/25532097
复制相似问题