Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct CurrencyDataStore: Codable {
- var table: String
- var no : String
- var rates: [Currency]
- enum CodingKeys: String, CodingKey {
- case table
- case no
- case rates
- }
- init(from decoder: Decoder) throws {
- let values = try decoder.container(keyedBy: CodingKeys.self)
- table = ((try values.decodeIfPresent(String.self, forKey: .table)))!
- no = (try values.decodeIfPresent(String.self, forKey: .no))!
- rates = (try values.decodeIfPresent([Currency].self, forKey: .rates))!
- } }
- struct Currency: Codable {
- var currency: String
- var code: String
- var mid: Double
- enum CodingKeys: String, CodingKey {
- case currency
- case code
- case mid
- }
- init(from decoder: Decoder) throws {
- let values = try decoder.container(keyedBy: CodingKeys.self)
- currency = try values.decode(String.self, forKey: .currency)
- code = try values.decode(String.self, forKey: .code)
- mid = try values.decode(Double.self, forKey: .mid)
- }
- }
- func getLatestRates(){
- guard let currencyUrl = URL(string: nbpApiUrl) else {
- return
- }
- let request = URLRequest(url: currencyUrl)
- let task = URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) -> Void in
- if let error = error {
- print(error)
- return
- }
- if let data = data {
- self.currencies = self.parseJsonData(data: data)
- }
- })
- task.resume()
- }
- func parseJsonData(data: Data) -> [Currency] {
- let decoder = JSONDecoder()
- do{
- let currencies = try decoder.decode([String:CurrencyDataStore].self, from: data)
- }
- catch {
- print(error)
- }
- return currencies
- }
Add Comment
Please, Sign In to add comment