2017-08-31 56 views
0

我正在使用Swift 4.0(Xcode Beta 9)构建的应用程序,该应用程序将从Bitstamp API(此部分正在工作)中提取比特币值并将值输出到标签中。我被卡住的地方是将这个电话的输出放到我的标签中。如何在Swift 4.0中将JSON输出设置为UILabel?

值打印出在这里:在我ViewController.swift文件

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

完整代码:

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 t等外部库o完成这个任务(因为没有它,我已经获得了99%的成绩)。

谢谢

+0

到底是什么问题? 'btcValues.last'打印出来很好吗?然后,您只需将其设置为标签的“文本”属性... –

回答

1

只是(在主线程)将该值赋给标签的text属性:

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

感谢您的帮助,是一个简单的修复 – Yashar

相关问题