annotate Functions/ReadJson.swift @ 0:668fd7e0d121

first commit
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Tue, 05 Jan 2021 16:43:09 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
1 //
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
2 // ReadJson.swift
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
3 // LazyBear
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
4 //
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 31/12/20.
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
6 //
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
7
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
8 import SwiftUI
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
9
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
10 import SwiftUI
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
11
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
12 // With this function I parse the local JSON file to read it and create a list with its items.
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
13 let companiesData: [CompanyData] = load("companies.json")
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
14
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
15 func load<T: Decodable>(_ filename: String) -> T {
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
16 let data: Data
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
17
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
18 guard let file = Bundle.main.url(forResource: filename, withExtension: nil)
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
19 else {
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
20 fatalError("Couldn't find \(filename) in main bundle.")
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
21 }
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
22
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
23 do {
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
24 data = try Data(contentsOf: file)
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
25 } catch {
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
26 fatalError("Couldn't load \(filename) from main bundle:\n\(error)")
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
27 }
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
28
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
29 do {
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
30 let decoder = JSONDecoder()
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
31 return try decoder.decode(T.self, from: data)
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
32 } catch {
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
33 fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)")
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
34 }
668fd7e0d121 first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
35 }