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