[Résolu] Valeur par défaut et sauvegarde
respawn
Membre
Bonjour à tous,
je continue dans mon apprentissage de Cocoa/Obj-C
Aujourd'hui, je souhaite avoir des valeurs par défaut pour plusieurs variables et pouvoir changer cette valeur grâce à une fenêtre "Settings" contenant plusieurs autres NSTextField ...
En gros, je lance mon programme, il sait que la valeur par defaut pour "server" est "localhost", si j'ouvre ma fenêtre "Settings", il est écrit dans mon champs NSTextField server "localhost", mais je peux le changer et mettre 127.0.0.1 et valider, ce qui change la valeur de la variable server et aussi, enregistre cette variable en tant que défaut.
si possible aussi, mettre un bouton "Restore" pour restaurer les valeurs "usines"
Merci beaucoup
je continue dans mon apprentissage de Cocoa/Obj-C
Aujourd'hui, je souhaite avoir des valeurs par défaut pour plusieurs variables et pouvoir changer cette valeur grâce à une fenêtre "Settings" contenant plusieurs autres NSTextField ...
En gros, je lance mon programme, il sait que la valeur par defaut pour "server" est "localhost", si j'ouvre ma fenêtre "Settings", il est écrit dans mon champs NSTextField server "localhost", mais je peux le changer et mettre 127.0.0.1 et valider, ce qui change la valeur de la variable server et aussi, enregistre cette variable en tant que défaut.
si possible aussi, mettre un bouton "Restore" pour restaurer les valeurs "usines"
Merci beaucoup
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Elle permet de gérer un fichier de préférence pour ton appli, où tu pourras y enregistrer des valeurs, pour les lire ensuite.
J'ai lié mon bouton "Valider" de ma fenêtre de Settings à la méthode settings dans mon fichier.m
Ensuite, j'ai vu qu'il fallait déclarer un objet de type NSUserDefalt,j'ai donc cette ligne
Mais ensuite ...
Comment enregistrer les valeurs de mes NSTextField dedans ?
Comment associer mes variables utilisées plus tard à ces valeurs ?
Comment initialiser ces valeurs au premier lancement de l'appli (pas besoin de valider obligatoirement avant de lancer le programme) ?
NSUserDefaults agit un peu comme NSDictionary.
Pour enregistrer une valeur :
[tt][prefs setObject:uneChaineContenantLeServeur forKey:@server][/tt]
et pour la lire :
[tt]NSString *laChaineContenantLeServeur=[prefs stringForKey:@server][/tt]
Et bien sûr, les valeurs à lire ou à enregistrer proviennents de tes textfields.
Tu peux aussi utiliser les bindings, ce qui a l'avantage de mettre à jours les usersDefaults de manière automatique (c'est le système via les bindings qui va faire le lien entre textField et userDefaults).
• Le chapitre 12 de Hillegass : avec les liaisons et synchronisations à la main
• Les bindings : tutoriel]
J'ai donc mis dans une fonction
J'ai juste après le @implementation. Si je le met dans la mêe fonction que les lignes précédentes, ca beug !
Résultat ? "keskidi" vaut NULL ... Pourquoi ?
NSUserDefaults *prefs = [NSUserDefaults sharedUserDefaults];
Tu as raison de commencer par la méthode directe, tu en apprendras beaucoup plus.
Si tu veux qu'on l'améliore, je te propose, plus tard quand tu auras le temps, d'apporter les éléments complémentaires selon la manière dont tu le perçois (sans doute du texte présentant le principe de NSUserDefaults justement). Cela ne peux que profiter à la communauté.
Si je sépare en deux, avec après @implementation et dans la fonction juste avant les autres lignes, warning et rien d'affiché ...
Pour le tuto, ca serait avec plaisir, mais je pense qu'il va falloir un bon paquet de temps avant que je sois capable d'en faire autant ;-)
je continue ...
Sont casse-pieds à pas avoir de norme sur les noms des singletons
Des fois "default", des fois "standard", des fois "shared"...
Dernière question subsidiaire ;-) Comment faire pour transformer un string NSString en char * (je sais c'est pas bien mais je suis obligé de le faire ) ? Au passage où trouver une liste de toutes ces petites fonctions bien pratique (intValue etc etc) ?
Merki
Le plus simple c'est "UTF8String"
Sinon pour "trouver une liste de toutes ces petites fonctions bien pratiques" : ben c'est simple : la documentation, voyons !
Accessible directement depuis Xcode, ou en utilisant une application comme AppKiDo (qui a l'avantage de lister directement aussi les méthodes des classes parent d'une classe donnée), ou encore la documentation en ligne (ici de NSString) !!