utilitaire "user defaults"

tabliertablier Membre
03:12 modifié dans Xcode et Developer Tools #1
Il y a quelque temps j'ai croisé sur le web un utilitaire qui permet d'examiner les "user default" dans la "data base" d'un utilisateur. Malheureusement, je n'ai pas noté ou j'ai vu cela, et je n'ai pas noté non plus le nom de l'appli!!
>:( y a des jour ou je me demande à  quoi je pense!!!

L'un d'entre vous connait-il ce logiciel?

Réponses

  • AliGatorAliGator Membre, Modérateur
    mars 2007 modifié #2
    dans 1174383004:

    Il y a quelque temps j'ai croisé sur le web un utilitaire qui permet d'examiner les "user default" dans la "data base" d'un utilisateur.
    Ben un "defaults read" dans le terminal ne te suffit pas ?

    Par exemple pour lire toutes les clés NSUserDefaults attachées à  Safari,
    defaults read com.apple.Safari
    
    --> Il suffit donc de mettre le bundle identifier de l'appli qui t'intéresse derrière "defaults read". Et en paramètre supplémentaire tu peux rajouter la clé que tu veux lire, si tu veux lire une clé spécifique. De même il existe "defaults write" pour écrire dans la base des UserDefaults.

    Tu peux aussi te contenter de "defaults read" pour lire TOUS les UserDefaults de tous les domaines, etc (et faire le tri ensuite), je te laisse potasser la page "man" de la commande "defaults".

    [EDIT]Ah ah ! pour une fois que je grille Renaud :D
  • mars 2007 modifié #3
    J'en connais un que tu as, mais qui est certainement moins convivial que celui que tu recherches: le bon vieux terminal. La commande à  taper est:
    [tt]defaults read | grep Terme[/tt]
    ou si tu recherches dans les prefs d'une appli (ou un domaine)
    [tt]defaults read com.apple.Safari | grep Terme[/tt]


    où tu remplaces Terme par le terme que tu recherches (si tu connais en plus les expressions régulières, c'est très très efficace). ça te renvoie la liste des préférences dont la clé ou la valeur contiennent le terme recherché.

  • schlumschlum Membre
    03:12 modifié #4
    Si tu veux pouvoir "tripoter" le fichier directement (s'il est en binaire) ->

    plutil -convert xml1 nomFichier.plist
    
     

    ;)
  • tabliertablier Membre
    03:12 modifié #5
    Bon, je vais passer par le terminal.
    La raison de ma recherche est la suivante:
    Si en cours de developpement j'ai un userdefault avec le mot clé "toto" et qu'en fin de developpement je n'utilise plus "toto", est-ce que je n'encombre pas inutilement les userdefault? Que ce passe t-il si en cours de travail je change le nom du bundle?

    Je sais qu'on peut se contenter de penser que le système s'en démerde, mais ma curiosité a été la plus forte et la doc ne donne pas de réponse évidente.
    Merci de vos réponses

  • schlumschlum Membre
    03:12 modifié #6
    Ca reste dans le fichier tant que tu ne le supprimes pas avec "removeObjectForKey:"...

    (C'est logique : comment peut-il savoir que tu n'en as plus besoin sinon ?)
  • ChachaChacha Membre
    03:12 modifié #7
    Mais n'y a-t-il pas plus simple que le terminal ? S'il s'agit juste de regarder les préférences d'un application, il suffit d'ouvrir le fichier plist correspondant dans ~/Library/Preferences. Le fichier plist s'ouvre alor avec "Property List Editor".
    Ou alors je n'ai pas compris la question ?

    +
    Chacha
  • AliGatorAliGator Membre, Modérateur
    03:12 modifié #8
    Si, tout à  fait chacha, si c'est juste pour l'utilisation qu'en décrit tablier, ça suffit.

    Et je dirais même plus :
    1) Les UserDefaults de ton appli sont dans le fichier ~/Library/Preferences/bundleIdentifier.plist
    2) Donc c'est lui qu'il faut ouvrir avec PropertyList Editor ou regarder, à  moins que tu ne préfères [tt]defaults read bundleIdentifier[/tt] mais c'est vrai que pour le coup autant utiliser PropertyList Editor (fourni avec les DevTools)
    3) Si tu veux faire le grand ménage, pour retrouver l'état dans lequel un nouvel utilisateur de ton appli serait, il suffit de supprimer ce fichier plist.

    4) Si tu changes le nom de bundle, ou plus exactement si tu changes le bundleIdentifier de ton appli en cours de dev, il recréera un nouveau plist avec le nouveau bundleIdentifier. Donc tu auras toujours le fichier ancienBundleID.plist dans le dossier Preferences, plus le nouveau.
    Tu peux alors supprimer l'ancien plist qui ne sert plus ;)
  • tabliertablier Membre
    03:12 modifié #9
    Merci les gars, j'en était arrivé presque là  (mais pas tout à  fait quand même)!!  ???
    tablier
  • ChachaChacha Membre
    03:12 modifié #10
    dans 1174397905:

    Si, tout à  fait chacha, si c'est juste pour l'utilisation qu'en décrit tablier, ça suffit.


    D'acc'. En fait c'est pas mal que ce fil de discussion propose plusieurs solutions. C'est toujours ça de gagné pour ceux qui chercheront plus tard. D'autant que la commande "defaults" n'est pas super connue, donc c'était une bonne idée.

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