Mercurial > public > geoquiz
annotate GeoQuiz/Logic/LoadFunc.swift @ 14:136928bae534
add user profile
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Wed, 19 Oct 2022 07:56:33 +0200 |
parents | a793f33f05fb |
children |
rev | line source |
---|---|
0 | 1 // |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
0
diff
changeset
|
2 // LoadFunc.swift |
0 | 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 } |