enregistrer des parametres dans un plist

alain.lcalain.lc Membre
14:02 modifié dans API AppKit #1
Bonjour,

je cherche à  enregistrer les parametres defini par l'utilisateur dans un fichier (plist ?) de façon à  pouvoir les recharger lors du prochain lancement de mon application.

je sait comment faire pour utilser setting.bundle mais dans le cas present je ne veut pas que mes preferences soit modifiable depuis l'icone "reglages" de l'iphone mais uniquement depuis l'onglet dedié de mon appli.

alors, question : comment sauvegarder les preferences sans que celles-ci soient visible dans  "reglages" (qui impose l'arret et la relance de mon appli pour modifier les parametres)

merci pour votre aide

Réponses

  • octobre 2008 modifié #2
    Salut,

    Il te suffit d'utiliser NSUserDefaults qui englobe les préférences de ton application.

    Comment on l'utilise ? :
    <br />NSUserDefaults* preferences = [NSUserDefaults standardUserDefaults];<br />
    

    Si tu veux y rentrer une valeur, par exemple une valeur Booléenne :
    <br />[preferences setBool:YES forKey:@&quot;MaClé&quot;];<br />
    

    Si tu veux charger la valeur d'une préférence et l'assigner à  un bouton :
    <br />BOOL value = [preferences boolForKey:@&quot;MaClé&quot;];<br />[monBouttonSwitch setState:value];<br />
    


    J'espère que tu auras compris  o:)

    L'idéal est de charger toutes les préférences dans le awakeFromNib (ou une méthode delegate lors du chargement une UIWindow ou autre..). Quand je dis "charger", je veux dire par là  assigner telles ou telles valeurs à  tels ou tels objets (comme le dernier morceau de code que je t'ai écris)


    Le NSUserDefaults est en fait sauvegardé lorsque ton application quitte (ou avant qu'elle ne plante il me semble aussi). Donc tu n'as pas à  t'occuper de faire un enregistrement puisque NSUserDefaults se charge de tout comme un grand. Tout ce que tu as à  faire c'est lui assigner des valeurs pour les clés que tu veux.
  • 14:02 modifié #3
    L'autre solution consiste à  construire à  la mano un dictionnaire dont les types de données des valeurs associées aux clés soient NSArray, NSString, NSDictionary, NSData, NSNumber ou NSDate.
    Le fichier correspondant pourra être placé à  ta convenance comme par exemple dans le bundle de ton appli.
  • 14:02 modifié #4
    Oui oui, mais déconseillé vu que NSUserDefaults est là  !
  • 14:02 modifié #5
    Cette solution m'a semblé répondre à  la question:

    Comment sauvegarder les preferences sans que celles-ci soient visible dans  "reglages" (qui impose l'arret et la relance de mon appli pour modifier les parametres)

  • alain.lcalain.lc Membre
    14:02 modifié #6
    merci pour votre aide, je vient de comprendre qu'en fait la solution est exactement la meme que pour les preferences "visible dans Réglages" de l'iphone sauf que dans le cas present je n'ai pas créer le "settings.bundle" ni aucun fichier Root.plist...
    et sa fonctionne, j'arrive à  lire et enregistrer mes preferences et elles ne sont pas visible dans réglages :)

    longue vie à  ce forum  :o
  • NoNo Membre
    14:02 modifié #7
    dans 1223220759:

    Cette solution m'a semblé répondre à  la question:
    Comment sauvegarder les preferences sans que celles-ci soient visible dans  "reglages" (qui impose l'arret et la relance de mon appli pour modifier les parametres)



    Je ne connais pas la prog sous iPhone, mais il est presque certain que modifier le bundle de l'appli est la pire chose à  faire. En effet, selon le niveau de droit de l'utilisateur, il se peut que modifier le contenu du bundle soit, tout simplement, impossible.

    Par contre, une question me titille : sous iPhone, comment est ce qu'un plist de préférence d'une appli peut-il être directement exploitable par les réglages iPhone ?
  • 14:02 modifié #8
    @No

    Il est vrai que les privilèges s'appliquent également aux applications !
    Il est également vrai que les privilèges sur les applications sont généralement en lecture/écriture pour le système ainsi que l'administrateur (root). Elles sont en lecture seule pour les autres cas. Il s'agit des paramètres par défaut. Par défaut, l'utilisateur est root.
    C'est dans ce contexte que j'avais proposé l'installation des préférences dans le bundle.
    Cette méthode a tout-de-même un intérêt appréciable; lorsque l'on ouvre une copie de l'application (placée sur un autre support), les préférences sont conservées.
    Il y a toujours une contrepartie !

    Moi aussi, une question me titille, combien de machines sont configurées autrement que le paramétrage par défaut ? :)

Connectez-vous ou Inscrivez-vous pour répondre.