swift - NSURLSession 中的字符串 nil

标签 swift

我在开头声明一个字符串

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/

相关文章:

ios - 如何在 Swift 中打开保存到相册的图像?

ios - Swift 无法为导航栏按钮项目设置动画

swift - 如何将参数 (args) 传递给 `request.get` ?

ios - 如何实现自定义动画天气 MapKit 叠加 - iOS、Swift

ios - 如何在 Swift iOS 中将字符串转换为日期字符串?

ios - 如何在 iOS 上获取多个目的地的预计到达时间?

SwiftUI @AppStorage 不会在函数中刷新

arrays - '[任何? ]' is not convertible to ' 有什么东西吗?

ios - Alamofire 授权 POST

swift - 如何根据方案将两个不同的解析数据库链接到应用程序?