Sauvegarde d'objet maison
olof
Membre
Salut tout le monde,
je fais un petit jeux et je gère les hi-scores. J'ai un objet (FGScores) qui contient un certains nombre de NSMutableArray qui elles mêmes contiennent des objets maison (FGScore).
Tout fonctionne. Mais pour l'instant, les meilleures scores ne sont pas sauvegardés.
Je pensais procéder de la manière suivante : Créer un fichier qui contient une archive de mon objet dans le bundle de l'application.
Est-ce une solution ? Ou est-ce que c'est pas du tout "Apple friendly" ?
De cette manière, les meilleures scores sont partagés entre les différents utilisateurs d'une même machine...
Merci pour vos précieux conseils !
je fais un petit jeux et je gère les hi-scores. J'ai un objet (FGScores) qui contient un certains nombre de NSMutableArray qui elles mêmes contiennent des objets maison (FGScore).
Tout fonctionne. Mais pour l'instant, les meilleures scores ne sont pas sauvegardés.
Je pensais procéder de la manière suivante : Créer un fichier qui contient une archive de mon objet dans le bundle de l'application.
Est-ce une solution ? Ou est-ce que c'est pas du tout "Apple friendly" ?
De cette manière, les meilleures scores sont partagés entre les différents utilisateurs d'une même machine...
Merci pour vos précieux conseils !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'ai vite fait le test, vu que j'avais déjà implémenté NSCoding dans mes 2 classes. A la sauvegarde, j'obtient cette erreur :
2005-11-13 11:45:49.261 Demineur[641] *** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '<FGScores: 0x3a97c0>' of class 'FGScores'.
Elle me parle pas beaucoup....
Dans un fichier plist (et pour les User Defaults c'est le cas puisque c'est stocké dans un plist) tu ne peux mettre que quelques types standards : NSString, NSNumber, NSDate, NSDictionary, NSDate, NSData, BOOL... et j'en oublie peut-être mais c'est les principaux.
Il faut que tu convertises ton FGScores en NSData avant de le stocker dans les UserDefaults. Avec un NSArchiver, je suppose que c'est le plus simple et fait pour ça.
Désolé
Merci de ne pas retourner le couteau dans la plaie ::)
J'ai juste eu un instant d'égarement
On défini quelles sont les valeurs par défaut de chaque préférence et seules les valeurs différentes seront sauvegardées. C'est bien ça ?
Je suis embêté pour donner une valeur par défaut à mon object maison... Dès que j'essaye, y'a plus rien qui fonctionne...
Comment faire pour écrire un fichier dans le répertoire '~/Library/Application Support/monApp/ ? Connaissant Apple, y'a sûrement quelque chose de prévu (que je n'ai pas trouvé, bien entendu...).
Montre nous le code incriminé car là ça ne nous en dit pas plus.
Et bien à ma connaissance, pas de miracle, c'est à toi de mettre en paramètre dans la méthode d'écriture utilisée ton chemin de destination "~/Library/Application Support/monApp/", en ayant préalablement créé ton répertoire "monApp".
Donc, si une bonne âme veut bien aider un gars perdu...
Ci-joint, mon petit projet. Pour l'instant, c'est surtout l'object Controller qui est important. Le reste est là , mais c'est plus pour la question que j'aurai quand ce premier problème sera résolu... Donc, mon but est de gérer deux préférences, il s'agit des variables taille et difficulte. Valeur par défaut au niveau des préférences : 12.
Si on lance le programme, on presse sur le premier bouton, ça met ces deux variables à 0. On presse le bouton Quitter, ça sauve les préfs (0 != 12 -> ça devrait être sauvé) dans un fichier a.a.Test. Chez moi, ce fichier ne se créé pas.
J'ai déjà peur d'apprendre quelle con***ie j'ai du faire....
Merci !
[Fichier joint supprimé par l'administrateur]
- Si je lance l'application avec Xcode, elle ne quite plus.
Le fichier "a.a.Test" est un fichier préférence (c'est le nom que tu lui a donné). Il est généré seulement quand l'application qui proprement.
Rajout cette ligne pour quitter ton application
[Fichier joint supprimé par l'administrateur]
Quand au message que tu as en lançant depuis le Finder, j'ai en effet la même chose... Mais ça ne me dit pas grand chose !!!!
Sinon, ma deuxième question, est la suivante. Dans le projet ci-joint (qui est le même qu'avant, saut que j'ai ajouté la ligne pour que l'appli quitte et dont j'ai viré les lignes en commentaire), j'essaye de sauvegarder en plus un objet FGScores, qui est en fait un tableau d'objets FGScore. Et là , plus rien de fonctionne. Le tableau de scores que j'initialise au lancement reste vide (premier bouton -> rien de s'affiche)...
Une idée ????
[Fichier joint supprimé par l'administrateur]
Seul les objects de type : String, Dictionary, Array, Number, Boolean, Date, Data peuvent être sauvegardé sans transformation.
Tu ne peux donc pas sauvegarder des objects FGScores tell quel.
Enregistrer les scores dans les préférences utilisateurs ne me semble pas approprier.
Pourquoi n'utilises tu pas une NSMutableArray par type de difficulté ?
Dans la version full, j'ai en effet plusieurs NSMutableArray.
Quand au fait que les scores soient partagés par tous les utilisateurs, j'en parlais dans un de mes premiers posts, mais c'est pas une obligation. Pour commencer, j'aimerais sauvegarder ça dans les préférences, donc par utilisateur.
:kicking:
Un jeu sûr quoi au faite ?
Il s'agit d'un "bête" démineur...