Skip to content

Instantly share code, notes, and snippets.

@caquant
Last active October 26, 2018 14:20
Show Gist options
  • Save caquant/eeee66b7b8df447c4ea06b8ab8c1116a to your computer and use it in GitHub Desktop.
Save caquant/eeee66b7b8df447c4ea06b8ab8c1116a to your computer and use it in GitHub Desktop.
import UIKit
struct Quote: Decodable {
let symbol: String
let companyName: String
let primaryExchange: String
let sector: String
let calculationPrice: String
let open: Double
let openTime: Int
let close: Double
let closeTime: Int
let high: Double
let low: Double
let latestPrice: Double
let latestSource: String
let latestTime: String
let latestUpdate: Int
let latestVolume: Double
let iexRealtimePrice: Double
let iexRealtimeSize: Double
let iexLastUpdated: Int
let delayedPrice: Double
let delayedPriceTime: Int
let extendedPrice: Double
let extendedChange: Double
let extendedChangePercent: Double
let extendedPriceTime: Int
let previousClose: Double
let change: Double
let changePercent: Double
let iexMarketPercent: Double
let iexVolume: Double
let avgTotalVolume: Double
let iexBidPrice: Double
let iexBidSize: Double
let iexAskPrice: Double
let iexAskSize: Double
let marketCap: Double
let peRatio: Double
let week52High: Double
let week52Low: Double
let ytdChange: Double
}
let data = try! Data(contentsOf: URL(string:"https://api.iextrading.com/1.0/stock/market/batch?symbols=aapl,fb&types=quote")!)
let response = try JSONDecoder().decode([String:[String: Quote]].self,from: data)
let apple = response["AAPL"]
let appleQuote = apple!["quote"]
print(appleQuote!)
// ## With URLSession
let session = URLSession.shared
let dataTask = session.dataTask(with: url) { (data, response, error) in
guard let data = data, error == nil else { return }
let response = try! JSONDecoder().decode([String:[String: Quote]].self,from: data)
let apple = response["FB"]
let appleQuote = apple!["quote"]
print(appleQuote!)
}
dataTask.resume()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment