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可以访问新值?
答案 0 :(得分:3)
sendAsynchronousRequest
是异步的。因此,在请求完成之前,您的最终println
会运行。完成处理程序运行后,新数据将可供所有读者使用(在此处理程序内部或外部)。
答案 1 :(得分:1)
sendAsynchronousRequest
需要一个作为参数传递的回调,一旦异步请求完成就会执行。这超出了代码中的线性流程。
这就是:
sendAsynchronousRequest
println
行(代码中的最后一行)self.arrayData
如果要使用更新的值,则必须稍微更改逻辑。您可以调用另一个闭包或类方法(意味着实例方法,而不是静态方法),以便在设置变量后对该变量进行过程处理。