2017-08-31 11 views
0

Bitstamp APIからBitcoin値を取得して(この部分は動作しています)、ラベルに値を出力するSwift 4.0(Xcode Beta 9)で構築されたアプリケーションに取り組んでいます。私が立ち往生しているところでは、私のラベルにこの電話の出力が届いています。ここ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 

I SwiftyJSONなどの外部ライブラリを使用したくないこれを達成する(私はそれなしで道の99%を得たので)。

あなたは

+0

は何? 'btcValues.last'はうまく印刷しますか?次に、単にラベルの 'text'プロパティに設定する必要があります。 –

答えて

1

ジャスト(メインスレッドから)ラベルのtextプロパティに値を代入ありがとう:正確に問題が

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

あなたの助けていただきありがとうございます。 – Yashar

関連する問題