Mercurial > public > simoleon
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 |
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 } |