ios - 在 SWIFT UI 控件中使用 JSON 数据

标签 ios json swift

我需要使用来自 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/

相关文章:

iphone - Objective-C:更改来自单独类的图像

iphone - iOS CF 数据结构与 NS 数据结构

iphone - iOS 应用程序中的屏幕共享?

sql - 插入参数值和 JSON 字符串值

ios - 如何使用 UITableViewCell 的委托(delegate)方法设置 UISlider

ios - ARKit 对象跟踪应用程序用于创建 arobject 文件

json - 使用 Ajax 将模型查询集从 Django 发送到 React

javascript - 加快json加载

ios - 如何检测 UITableView 上的触摸,到目前为止似乎没有任何效果?

ios - 如何将 facebook token 安全地扔到自己的服务器上?