diff 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
line wrap: on
line diff
--- a/GeoQuiz/Logic/PersistenceController.swift	Sat Oct 22 08:56:54 2022 +0100
+++ b/GeoQuiz/Logic/PersistenceController.swift	Sun Oct 23 00:11:38 2022 +0100
@@ -6,50 +6,53 @@
 //
 
 import CoreData
-import Foundation
 
 class PersistenceController: ObservableObject {
+    let container: NSPersistentContainer
+    
+    init(inMemory: Bool = false) {
+        container = NSPersistentContainer(name: "GeoQuiz")
+        
+        if inMemory {
+            container.persistentStoreDescriptions.first!.url = URL(fileURLWithPath: "/dev/null")
+        }
+        
+        container.loadPersistentStores(completionHandler: { (storeDescription, error) in
+            if let error = error {
+                fatalError("Unresolved error \(error.localizedDescription)")
+            }
+        })
+        
+        container.viewContext.automaticallyMergesChangesFromParent = true
+    }
     
     // Create mock data for previews
     static var preview: PersistenceController = {
-        let result = PersistenceController()
+        let result = PersistenceController(inMemory: true)
         let viewContext = result.container.viewContext
         
-//        for _ in 0..<10 {
-//            let playedGame = PlayedGame(context: viewContext)
-//            playedGame.id = UUID()
-//            playedGame.type = GameType(rawValue: Int16.random(in: 0...3))!
-//            playedGame.score = Int32.random(in: 0...50)
-//            playedGame.date = Date()
-//            
-//            if playedGame.type == .guessTheFlag || playedGame.type == .guessTheCapital {
-//                playedGame.correctAnswers = ["Bangladesh", "Belgium", "Burkina Faso", "Bermuda", "Jamaica"]
-//                playedGame.wrongAnswers = ["Belarus", "Russia"]
-//            } else {
-//                playedGame.correctAnswers = ["Herat", "Lobito", "Darregueira", "San Juan"]
-//                playedGame.wrongAnswers = ["San Luis", "Oranjestad"]
-//            }
-//        }
+        for _ in 0..<10 {
+            let playedGame = PlayedGame(context: viewContext)
+            playedGame.id = UUID()
+            playedGame.type = GameType(rawValue: Int16.random(in: 0...3))!
+            playedGame.score = Int32.random(in: 0...50)
+            playedGame.date = Date()
+            
+            if playedGame.type == .guessTheFlag || playedGame.type == .guessTheCapital {
+                playedGame.correctAnswers = ["Bangladesh", "Belgium", "Burkina Faso", "Bermuda", "Jamaica"]
+                playedGame.wrongAnswers = ["Belarus", "Russia"]
+            } else {
+                playedGame.correctAnswers = ["Herat", "Lobito", "Darregueira", "San Juan"]
+                playedGame.wrongAnswers = ["San Luis", "Oranjestad"]
+            }
+        }
         do {
             try viewContext.save()
         } catch {
             let nsError = error as NSError
             fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
         }
+        
         return result
-        
     }()
-    
-    // Initialize container
-    let container = NSPersistentContainer(name: "GeoQuiz")
-    
-    init() {
-        container.loadPersistentStores { description, error in
-            if let error = error {
-                print("Core Data failed to load: \(error.localizedDescription)")
-            }
-        }
-        
-        container.viewContext.automaticallyMergesChangesFromParent = true
-    }
 }