如何在 Swift 4.0 中将 JSON 输出设置为 UILabel?
Posted
技术标签:
【中文标题】如何在 Swift 4.0 中将 JSON 输出设置为 UILabel?【英文标题】:How to set JSON output into UILabel in Swift 4.0? 【发布时间】: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
属性...
【参考方案1】:
只需将值分配给标签的text
属性(来自主线程):
let btcValues = try JSONDecoder().decode(BitcoinResponse.self, from: data)
DispatchQueue.main.async
self.btcValue.text = "$\(btcValues.last)"
【讨论】:
感谢您的帮助,解决方法很简单以上是关于如何在 Swift 4.0 中将 JSON 输出设置为 UILabel?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中将 Realm 对象转换为 JSON?