Mercurial > public > geoquiz
comparison GeoQuiz/Logic/PersistenceController.swift @ 19:f140bb277c96
refactor code
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Sun, 23 Oct 2022 00:11:38 +0100 |
parents | 1011e56b7832 |
children | e281791e0494 |
comparison
equal
deleted
inserted
replaced
18:d20cf93c9812 | 19:f140bb277c96 |
---|---|
4 // | 4 // |
5 // Created by Dennis Concepción Martín on 19/10/22. | 5 // Created by Dennis Concepción Martín on 19/10/22. |
6 // | 6 // |
7 | 7 |
8 import CoreData | 8 import CoreData |
9 import Foundation | |
10 | 9 |
11 class PersistenceController: ObservableObject { | 10 class PersistenceController: ObservableObject { |
11 let container: NSPersistentContainer | |
12 | |
13 init(inMemory: Bool = false) { | |
14 container = NSPersistentContainer(name: "GeoQuiz") | |
15 | |
16 if inMemory { | |
17 container.persistentStoreDescriptions.first!.url = URL(fileURLWithPath: "/dev/null") | |
18 } | |
19 | |
20 container.loadPersistentStores(completionHandler: { (storeDescription, error) in | |
21 if let error = error { | |
22 fatalError("Unresolved error \(error.localizedDescription)") | |
23 } | |
24 }) | |
25 | |
26 container.viewContext.automaticallyMergesChangesFromParent = true | |
27 } | |
12 | 28 |
13 // Create mock data for previews | 29 // Create mock data for previews |
14 static var preview: PersistenceController = { | 30 static var preview: PersistenceController = { |
15 let result = PersistenceController() | 31 let result = PersistenceController(inMemory: true) |
16 let viewContext = result.container.viewContext | 32 let viewContext = result.container.viewContext |
17 | 33 |
18 // for _ in 0..<10 { | 34 for _ in 0..<10 { |
19 // let playedGame = PlayedGame(context: viewContext) | 35 let playedGame = PlayedGame(context: viewContext) |
20 // playedGame.id = UUID() | 36 playedGame.id = UUID() |
21 // playedGame.type = GameType(rawValue: Int16.random(in: 0...3))! | 37 playedGame.type = GameType(rawValue: Int16.random(in: 0...3))! |
22 // playedGame.score = Int32.random(in: 0...50) | 38 playedGame.score = Int32.random(in: 0...50) |
23 // playedGame.date = Date() | 39 playedGame.date = Date() |
24 // | 40 |
25 // if playedGame.type == .guessTheFlag || playedGame.type == .guessTheCapital { | 41 if playedGame.type == .guessTheFlag || playedGame.type == .guessTheCapital { |
26 // playedGame.correctAnswers = ["Bangladesh", "Belgium", "Burkina Faso", "Bermuda", "Jamaica"] | 42 playedGame.correctAnswers = ["Bangladesh", "Belgium", "Burkina Faso", "Bermuda", "Jamaica"] |
27 // playedGame.wrongAnswers = ["Belarus", "Russia"] | 43 playedGame.wrongAnswers = ["Belarus", "Russia"] |
28 // } else { | 44 } else { |
29 // playedGame.correctAnswers = ["Herat", "Lobito", "Darregueira", "San Juan"] | 45 playedGame.correctAnswers = ["Herat", "Lobito", "Darregueira", "San Juan"] |
30 // playedGame.wrongAnswers = ["San Luis", "Oranjestad"] | 46 playedGame.wrongAnswers = ["San Luis", "Oranjestad"] |
31 // } | 47 } |
32 // } | 48 } |
33 do { | 49 do { |
34 try viewContext.save() | 50 try viewContext.save() |
35 } catch { | 51 } catch { |
36 let nsError = error as NSError | 52 let nsError = error as NSError |
37 fatalError("Unresolved error \(nsError), \(nsError.userInfo)") | 53 fatalError("Unresolved error \(nsError), \(nsError.userInfo)") |
38 } | 54 } |
55 | |
39 return result | 56 return result |
40 | |
41 }() | 57 }() |
42 | |
43 // Initialize container | |
44 let container = NSPersistentContainer(name: "GeoQuiz") | |
45 | |
46 init() { | |
47 container.loadPersistentStores { description, error in | |
48 if let error = error { | |
49 print("Core Data failed to load: \(error.localizedDescription)") | |
50 } | |
51 } | |
52 | |
53 container.viewContext.automaticallyMergesChangesFromParent = true | |
54 } | |
55 } | 58 } |