我在开头声明了一个字符串

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为零。我如何才能使它不变为nil并且可以实际使用该值?

例如,我想使用

println (testString)


方法块之后。但这是零

最佳答案

您的变量为nil的原因是因为闭包是异步执行的。这意味着网络请求之后的其余代码将继续正常调用,但是仅在网络请求完成时才调用包含参数数据,响应和错误的代码。

要解决此问题,请尝试将要对变量执行的所有操作放在闭包中,以使println(testString)放在大括号内。

关于swift - NSURLSession中的字符串nil,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46167124/

10-10 22:49