Mercurial > public > geoquiz
comparison GeoQuiz/Logic/Load.swift @ 0:413e2d21333e
first commit
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Tue, 20 Sep 2022 08:13:26 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:413e2d21333e |
---|---|
1 // | |
2 // Load.swift | |
3 // GeoQuiz | |
4 // | |
5 // Created by Dennis Concepción Martín on 7/9/22. | |
6 // | |
7 | |
8 import Foundation | |
9 | |
10 func load<T: Decodable>(_ filename: String) -> T { | |
11 let data: Data | |
12 | |
13 guard let file = Bundle.main.url(forResource: filename, withExtension: nil) | |
14 else { | |
15 fatalError("Couldn't find \(filename) in main bundle.") | |
16 } | |
17 | |
18 do { | |
19 data = try Data(contentsOf: file) | |
20 } catch { | |
21 fatalError("Couldn't load \(filename) from main bundle:\n\(error)") | |
22 } | |
23 | |
24 do { | |
25 let decoder = JSONDecoder() | |
26 return try decoder.decode(T.self, from: data) | |
27 } catch { | |
28 fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)") | |
29 } | |
30 } |