Mercurial > public > geoquiz
diff GeoQuiz/Logic/GameProtocol+Extension.swift @ 15:f1967f8cc67b
first iteration of core data
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Wed, 19 Oct 2022 10:04:17 +0200 |
parents | 136928bae534 |
children | f140bb277c96 |
line wrap: on
line diff
--- a/GeoQuiz/Logic/GameProtocol+Extension.swift Wed Oct 19 07:56:33 2022 +0200 +++ b/GeoQuiz/Logic/GameProtocol+Extension.swift Wed Oct 19 10:04:17 2022 +0200 @@ -8,6 +8,7 @@ import Foundation import SwiftUI import AVFAudio +import CoreData protocol Game: ObservableObject { @@ -29,7 +30,6 @@ // Alerts var alertTitle: String { get set } var alertMessage: String { get set } - var showingGameOverAlert: Bool { get set } var showingEndGameAlert: Bool { get set } var showingWrongAnswerAlert: Bool { get set } var showingExitGameAlert: Bool { get set } @@ -91,7 +91,7 @@ if userLives == 0 { alertTitle = "🤕 Game over 🤕" alertMessage = "Get up and try again." - showingGameOverAlert = true + showingEndGameAlert = true } else { alertTitle = "🔴 Wrong 🔴" alertMessage = "You have \(userLives) lives left." @@ -107,14 +107,20 @@ } } - func reset(selector: () -> Void) { - dataAsked = [String: T]() - userScore = 0 - userLives = 3 - correctAnswers = [String: T]() - wrongAnswers = [String: T]() - askQuestion { - selector() + func save(_ gameType: GameType, with moc: NSManagedObjectContext) { + let playedGame = PlayedGame(context: moc) + + playedGame.id = UUID() + playedGame.type = gameType + playedGame.date = Date() + playedGame.score = Int32(userScore) + playedGame.correctAnswers = Array(correctAnswers.keys) + playedGame.wrongAnswers = Array(wrongAnswers.keys) + + do { + try moc.save() + } catch { + print("Couldn't save object to CoreData: \(error)") } }