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 }