Variable depuis l'AppDelegate
Bonjour,
je souhaite sauvegarder des paramètres lorsque l'utilisateur quitte l'application (et les restaurer au lancement). Mais je ne comprend pas comment récupérer des variables d'autres vu depuis l'AppDelegate...
Pour récupérer des variables de l'AppDelegate depuis d'autres vues aucun soucis.
En revanche en sens inverse, je ne comprend pas. J'ai tenté de faire avec le même principe mais j'obtient une erreur à l'exécution.
​Ca doit être tout con, mais je ne trouve ni par moi même, ni en faisant des recherches...
Merci pour votre aide !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Euh... Et tu as utilisé NSUserDefaults ? C'est fait pour çà . En plus tu pourras y accéder de n'importe quelle vue de ton application.
Comme Alf, tu peux utiliser NSUserDefaults mais, si tu voulais avoir plusieurs groupes de paramètres, tu pourrais faire tes propres classes comme ci-suivant :
Merci pour vos réponses et désolé de répondre un peu tard.
Effectivement NSUserDefault me parait pas mal. En revanche étant donner que ce que j'ai stocker s'avère être un NSMutable Array composer d'objet que j'ai crée je vais devoir les archiver un par un et les stocker dans un NSArray ?
Du coup, impossible de récupérer des variables d'une vue en créant une instance de celle ci comme on peut le faire avec l'AppDelegate ?
J'avais initialement dans l'idée de récupérer les données que je souhaite stocker depuis l'AppDelegate puis de les stocker dans un fichier avec un simple writeToFile. Mais la solution avec NSUserDefault me permettra d'apprendre quelques chose de nouveau donc je vais plutôt me tourner vers celle ci je pense.
@Joanna Carter : Un peu compliquer pour moi comme solution dans l'immédiat je ne suis pas sure d'avoir bien saisie, je verrai ce genre de solution quand je serais un peu plus à l'aise avec la programmation iOS.
Oui mais la méthode la meilleure est d'implémenter NSCoding sur tes classes. Du coup, tous les objets dans un NSArray seront "stocké" automatiquement.
Pour tout savoir sur NSUserDefaults : Preferences and Settings Programming Guide (ne pas se focaliser sur la partie Settings.bundle il y a aussi des choses intéressantes sur comment marche NSUserDefaults et ce qu'on peut y stocker dedans)
J'ai finalement implanter le protocole NSCoding sur ma classe (simplement les deux méthodes), puis utiliser NSUserDefaults par la suite. Tout fonctionne parfaitement !
Au passage, si quelqu'un tombe sur ce topic et à eu les mêmes soucis que moi j'ai trouvé un tuto assez simple pour l'utilisation de NSCoding et NSUserDefaults que voici : http://sam.roon.io/archiving-objective-c-objects-with-nscoding.
Merci pour votre précieuse aide, sujet résolu !
Le code que tu as trouvé, c'est pas du tout bon. Je l'ai modernisé au normes d'Objective-C 2.0 avec ARC :
... et voilà ! Beaucoup plus facile et lisible
C'est le problème de Google, beaucoup de recherches vieillissent et dans certaines sphères c'est très pénalisant. J'ajoute systématiquement des critères de date dans mes recherches sur des exemples de code.
Je fais en général de même, mais parfois aucune recherche ne correspond.
Je vais modifier ça du coup
Ceci dis, même avec un code aussi vieux tout fonctionne parfaitement. Je n'ai d'ailleurs pas vraiment saisie la différence entre les deux codes : la notation avec "_" m'est encore inconnue... Je vais m'y pencher dessus ! Un des inconvénients d'apprendre un nouveau langage seul, je ne sait jamais pas ou commencer, surtout quand je mène plusieurs projet de front le temps manque un peu pour faire tout ça correctement.
Voici un lien d'un document Apple pour moderniser le code Objective C, il contient pas tout mais il faut vraiment le lire.
https://developer.apple.com/library/prerelease/ios/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html#//apple_ref/doc/uid/TP40014150