我需要使用来自 JSON 网络服务的数据来更新 SWIFT 应用程序中的控件。我可以毫无问题地获取数据,但我似乎无法从任务 block 内访问 UI 控件,也无法让 JSON 在任务 block 外保留。我四处搜寻但没有找到答案。这是我的测试代码。当前结果是 value1Result 在 task 内部有值,但在外部为 nil。提前致谢。
var jsonResult:NSDictionary!
var value1Result:String!
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) { data, response, error in
var error: NSError?
jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: &error)!
as! Dictionary<String, AnyObject>
println(jsonResult)
if let value1 = jsonResult["value1"] {
println(value1)
value1Result = value1 as! String
}
}
task.resume()
self.textView1.text = value1Result
最佳答案
您可以使用异步 block 来更新主 UI
dispatch_async(dispatch_get_main_queue()) {
//Update your UI
}
用你的代码
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) { data, response, error in
var error: NSError?
jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: &error)!
as! Dictionary<String, AnyObject>
println(jsonResult)
if let value1 = jsonResult["value1"] {
println(value1)
dispatch_async(dispatch_get_main_queue()) {
//Update your UI
value1Result = value1 as! String
self.yourtextview.text = value1 as! String
}
}
}
task.resume()
关于ios - 在 SWIFT UI 控件中使用 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31719547/