annotate LazyBear/Global functions/ParseJSON.swift @ 338:71a9c0e61783

Implementing SearchView
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Thu, 01 Apr 2021 20:55:09 +0200
parents
children e81c18164afb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
338
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
1 //
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
2 // ParseJSON.swift
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
3 // LazyBear
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
4 //
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 1/4/21.
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
6 //
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
7
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
8 import Foundation
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
9
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
10 let companyTags: [CompanyTagsModel] = parseJSON("companyTags.json")
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
11
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
12 func parseJSON<T: Decodable>(_ filename: String) -> T {
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
13 let data: Data
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
14
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
15 guard let file = Bundle.main.url(forResource: filename, withExtension: nil)
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
16 else {
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
17 fatalError("Couldn't find \(filename) in main bundle.")
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
18 }
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
19
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
20 do {
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
21 data = try Data(contentsOf: file)
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
22 } catch {
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
23 fatalError("Couldn't load \(filename) from main bundle:\n\(error)")
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
24 }
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
25
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
26 do {
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
27 let decoder = JSONDecoder()
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
28 return try decoder.decode(T.self, from: data)
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
29 } catch {
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
30 fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)")
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
31 }
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
32 }