如何在Swift 4.0中将JSON输出设置到UILabel中? [英] How to set JSON output into UILabel in Swift 4.0?

查看:166
本文介绍了如何在Swift 4.0中将JSON输出设置到UILabel中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个使用Swift 4.0(Xcode Beta 9)构建的应用程序,该应用程序将从Bitstamp API中提取比特币值(此部分正在运行)并在标签中输出该值.卡住的地方是将此调用的输出放入标签.

I'm working on an app built in Swift 4.0 (Xcode Beta 9) that will pull in Bitcoin values from the Bitstamp API (this part is working) and output the value in a label. Where I'm stuck is getting the output of this call into my label.

值在这里打印出来:

let btcValues = try
JSONDecoder().decode(BitcoinResponse.self, from: data)
print("$" + btcValues.last)

在我的ViewController.swift文件中完成代码:

Complete code in my ViewController.swift file:

import UIKit

struct BitcoinResponse: Decodable {
    let high: String
    let last: String
    let timestamp: String
    let bid: String
    let vwap: String
    let volume: String
    let low: String
    let ask: String
    let open: String
}

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let jsonUrlString = "https://www.bitstamp.net/api/v2/ticker/btcusd/"
        guard let url = URL(string: jsonUrlString) else { return }

        URLSession.shared.dataTask(with: url) {
            (data, response, err) in
            guard let data = data else { return }

            do {
                let btcValues = try
                    JSONDecoder().decode(BitcoinResponse.self, from: data)
                print("$" + btcValues.last)
                                }
            catch let jsonErr {
                print("Error serializing json:", jsonErr)
            }

        }.resume()

    }
    @IBOutlet weak var btcValue: UILabel!
    //output goes here
}

此处引用了我的出口 btcValue :

@IBOutlet weak var btcValue: UILabel!
//output goes here

我宁愿不使用SwiftyJSON之类的外部库来完成此操作(因为我已经有99%的方法没有了它).

I would rather not use an external library such as SwiftyJSON to accomplish this (as I've gotten 99% of the way there without it).

谢谢

推荐答案

只需将值分配给标签的text属性(从主线程):

Just assign the value to the label's text property (from the main thread):

let btcValues = try JSONDecoder().decode(BitcoinResponse.self, from: data)
DispatchQueue.main.async {
    self.btcValue.text = "$\(btcValues.last)"
}

这篇关于如何在Swift 4.0中将JSON输出设置到UILabel中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆