Skip to content
Snippets Groups Projects
Commit 647f6755 authored by Sofiane Lasri's avatar Sofiane Lasri
Browse files

Ajout de la récupération du score depuis le serveur, et ajout de la méthode getScore.

parent 1f44de93
Branches
No related tags found
No related merge requests found
......@@ -155,6 +155,10 @@ class GameEngine: NSObject {
return false;
}
public func getScore() -> Int {
return self.score;
}
public func saveScore() -> Void {
// Enregistrement du score dans la base Core Data
......@@ -179,5 +183,78 @@ class GameEngine: NSObject {
static func getOnlineScoreboard() -> Void {
// Récupération du classement depuis le serveur
// URL de l'API
let url = URL(string: "https://miscs.sl-projects.com/IUT-ORSAY/LP-PRISM/TP-iOS/")!
// Création de la tâche de session URLSessionDataTask pour récupérer les données
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
// Vérification des erreurs et de la disponibilité des données
guard let data = data, error == nil else {
print("Erreur lors de la récupération des données : \(error?.localizedDescription ?? "Erreur inconnue")")
return
}
// Récupération du contexte Core Data
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
print("Impossible d'obtenir l'AppDelegate")
return
}
let managedContext = appDelegate.persistentContainer.viewContext
do {
// Décodage du JSON en une liste de dictionnaires
guard let jsonArray = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]] else {
print("Le JSON n'est pas au format attendu.")
return
}
// Utilisation des données JSON
for jsonScore in jsonArray {
// Création d'une instance NSManagedObject pour le score
let scoreObject = Score(context: managedContext)
// Association des valeurs du JSON aux attributs du modèle Core Data
scoreObject.categoryName = jsonScore["categoryName"] as? String ?? ""
scoreObject.difficulty = jsonScore["difficulty"] as? String ?? ""
scoreObject.playerName = jsonScore["playerName"] as? String ?? ""
if let scoreValue = jsonScore["score"] as? Int {
scoreObject.score = Int16(scoreValue)
} else if let scoreValueString = jsonScore["score"] as? String,
let scoreValue = Int(scoreValueString) {
scoreObject.score = Int16(scoreValue)
} else {
scoreObject.score = 0 // Valeur par défaut si le score ne peut pas être extrait du JSON
}
}
// Sauvegarde du contexte Core Data
do {
try managedContext.save()
} catch {
print("Erreur lors de la sauvegarde du contexte Core Data : \(error.localizedDescription)")
}
// Récupération des scores enregistrés dans une liste
let fetchRequest = NSFetchRequest<Score>(entityName: "Score")
let fetchedScores = try managedContext.fetch(fetchRequest)
// Utilisation de la liste de scores
for fetchedScore in fetchedScores {
print("Category: \(fetchedScore.categoryName)")
print("Difficulty: \(fetchedScore.difficulty)")
print("Player Name: \(fetchedScore.playerName)")
print("Score: \(fetchedScore.score)")
print("------------------------")
}
} catch {
print("Erreur lors du décodage JSON : \(error.localizedDescription)")
}
}
// Lancement de la tâche
task.resume()
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment