【问题标题】:How to set JSON output into UILabel in Swift 4.0?如何在 Swift 4.0 中将 JSON 输出设置为 UILabel?
【发布时间】:2017-08-31 21:29:08
【问题描述】:

我正在开发一个内置于 Swift 4.0 (Xcode Beta 9) 的应用程序,它将从 Bitstamp API 中提取比特币值(这部分正在运行)并在标签中输出值。我被困的地方是将这个调用的输出输入到我的标签中。

值在这里打印出来:

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

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

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% 的工作)。

谢谢

【问题讨论】:

  • 到底是什么问题? btcValues.last 打印出来就好了?然后您只需将其设置为标签的text 属性...

标签: ios json swift ios11 swift4


【解决方案1】:

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

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

【讨论】:

  • 感谢您的帮助,解决方法很简单
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
相关资源
最近更新 更多