Mercurial > public > geoquiz
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 } |