annotate Simoleon/Helpers/ReadJson.swift @ 183:d2398f02e1ce

implement unit currency selector
author Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
date Mon, 20 Dec 2021 12:28:16 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
183
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
1 //
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
2 // ReadJson.swift
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
3 // Simoleon
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
4 //
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 8/12/21.
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
6 //
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
7
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
8 import Foundation
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
9
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
10 func readJson<T: Decodable>(from filename: String) -> T {
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
11 let data: Data
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
12
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
13 guard let file = Bundle.main.url(forResource: filename, withExtension: nil)
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
14 else {
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
15 fatalError("Failed to locate \(filename)")
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
16 }
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
17
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
18 do {
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
19 data = try Data(contentsOf: file)
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
20 } catch {
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
21 fatalError("Failed to load \(filename)")
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
22 }
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
23
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
24 do {
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
25 let decoder = JSONDecoder()
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
26 return try decoder.decode(T.self, from: data)
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
27 } catch {
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
28 fatalError("Failed to decode \(filename)")
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
29 }
d2398f02e1ce implement unit currency selector
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
30 }