我在开头声明一个字符串
var testString: String?
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
let xml = SWXMLHash.parse(data)
testString = xml["root"]["schedule"]["date"].element?.text
}
但是在 NSURLSession 之外,testString
为零。我怎样才能使它不变成零并且我可以实际使用该值?
例如我想使用
println (testString)
在方法 block 之后。但它是零
最佳答案
变量为零的原因是因为闭包是异步执行的。这意味着网络请求后的其余代码将继续正常调用,但包含参数 data、response 和 error 的代码仅在网络请求完成时调用。
要解决此问题,请尝试将您想要对变量执行的任何操作放入闭包内,这样您的 println(testString)
将位于大括号内。
关于swift - NSURLSession 中的字符串 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46167124/