comparison GeoQuiz/Logic/PersistenceController.swift @ 21:b145c408f791

refactor code
author Dennis C. M. <dennis@denniscm.com>
date Tue, 25 Oct 2022 15:30:01 +0200
parents e281791e0494
children 56add5561261
comparison
equal deleted inserted replaced
20:e281791e0494 21:b145c408f791
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 SwiftUI
9 10
10 class PersistenceController { 11 class PersistenceController {
11 static let shared = PersistenceController() 12 static let shared = PersistenceController()
12 13
13 // Create mock data for previews 14 let container: NSPersistentCloudKitContainer
15
14 static var preview: PersistenceController = { 16 static var preview: PersistenceController = {
15 let result = PersistenceController(inMemory: true) 17 let result = PersistenceController(inMemory: true)
16 let viewContext = result.container.viewContext 18 let viewContext = result.container.viewContext
17 19 createMockData(nil, viewContext)
18 for _ in 0..<10 { 20
19 let playedGame = PlayedGame(context: viewContext)
20 playedGame.type = GameType(rawValue: Int16.random(in: 0...3))!
21 playedGame.score = Int32.random(in: 0...50)
22 playedGame.date = Date()
23
24 if playedGame.type == .guessTheFlag || playedGame.type == .guessTheCapital {
25 playedGame.correctAnswers = ["Bangladesh", "Belgium", "Burkina Faso", "Bermuda", "Jamaica"]
26 playedGame.wrongAnswers = ["Belarus", "Russia"]
27 } else {
28 playedGame.correctAnswers = ["Herat", "Lobito", "Darregueira", "San Juan"]
29 playedGame.wrongAnswers = ["San Luis", "Oranjestad"]
30 }
31 }
32 do {
33 try viewContext.save()
34 } catch {
35 let nsError = error as NSError
36 fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
37 }
38
39 return result 21 return result
40 }() 22 }()
41
42 let container: NSPersistentCloudKitContainer
43 23
44 init(inMemory: Bool = false) { 24 init(inMemory: Bool = false) {
45 container = NSPersistentCloudKitContainer(name: "GeoQuiz") 25 container = NSPersistentCloudKitContainer(name: "GeoQuiz")
46 26
47 if inMemory { 27 if inMemory {
54 } 34 }
55 }) 35 })
56 36
57 container.viewContext.automaticallyMergesChangesFromParent = true 37 container.viewContext.automaticallyMergesChangesFromParent = true
58 } 38 }
39
40 #if DEBUG
41 static func createMockData(_ playedGames: FetchedResults<PlayedGame>?, _ moc: NSManagedObjectContext) {
42 for _ in 0..<10 {
43 let playedGame = PlayedGame(context: moc)
44
45 playedGame.type = GameType(rawValue: Int16.random(in: 0...3))!
46 playedGame.score = Int32.random(in: 0...50)
47 playedGame.date = Date()
48
49 if playedGame.type == .guessTheFlag || playedGame.type == .guessTheCapital {
50 playedGame.correctAnswers = ["Bangladesh", "Belgium", "Burkina Faso", "Bermuda", "Jamaica"]
51 playedGame.wrongAnswers = ["Belarus", "Russia"]
52 } else {
53 playedGame.correctAnswers = ["Herat", "Lobito", "Darregueira", "San Juan"]
54 playedGame.wrongAnswers = ["San Luis", "Oranjestad"]
55 }
56 }
57 do {
58 try moc.save()
59 } catch {
60 let nsError = error as NSError
61 fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
62 }
63 }
64 #endif
59 } 65 }