2017-08-31 18 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

相關問題