如何在 Swift 4.0 中将 JSON 输出设置为 UILabel?
How to set JSON output into UILabel in Swift 4.0?
我正在开发一个内置于 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% 的工作)。
谢谢
给label的text
赋值即可属性(来自主线程):
let btcValues = try JSONDecoder().decode(BitcoinResponse.self, from: data)
DispatchQueue.main.async {
self.btcValue.text = "$\(btcValues.last)"
}
我正在开发一个内置于 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% 的工作)。
谢谢
给label的text
赋值即可属性(来自主线程):
let btcValues = try JSONDecoder().decode(BitcoinResponse.self, from: data)
DispatchQueue.main.async {
self.btcValue.text = "$\(btcValues.last)"
}