Apple utilise le format p-list pour stocker les informations des logiciels. C'est un format de type HTML avec balises. En exemple, ouvrez le dossier /Library/Preference/ de votre dossier utilisateur.
Ce format est de lisibilité pénible par TextEdit ou autre. Mais bonheur, l'utilitaire "Property List Editor", lit les balises, et vous présente les données de manière tout à fait lisibles.
Le volume de données de notre application étant faible, et les performances de gestions des p-list étant bonnes, nous utiliserons la technique de p-list pour stocker nos données.
Pour cela il nous faudra :
Examinons une p-list particulière, celle de notre application "MonLogiciel".
Utilisons l'utilitaire "Property List Editor" pour lire "Info.plist" de MonLogiciel".
CFBundleIdentifier est le paramètre pour définir la plist utilisateur. IL faudra remplacer la valeur "com.apple.ASApplication" par un nom à soi. Sinon, toutes les applications utiliseront cette même plist. Donc, s'écraseront les uns les autres.
Lisons "Info.plist dans le projet xCode.
Pour avoir un nom de p-list à moi, j'ai remplacé "com.apple.ASApplication" par "com.legallou.MonLogiciel" dans "CFBundleIdentifier".
L'usage est de mettre son domaine en verlan pour réduire les risques d'interférence.
Votre fichier p-list sera stocké dans votre /Library/Preference/ de votre dossier utilisateur.
Faites "Save".
Le fichier p-list est créé par la commande suivante :
tell user defaults -- Création de la p-list--------
make new default entry at end of default entries with properties {name:"NotesToutes", contents:mesNotes}
end tell
"default entry" est le nom de code pour désigner la p-list des préférences.
name:"NotesToutes" donne NotesToutes comme nom d'entrée pour la liste de données dans la p-list.
Et mesNotes est la variable contenant les données à stocker dans la p-list.
Vous pouvez créer autant d'entrée, name:"NotesToutes", name:"xyz", name:"etc" que vous voulez dans une plist.
A chaque fois que vous lancerez la commande, l'entrée sera mise à jour. Le fichier, lui-même sera créé la première fois, et mis à jour par la suite.
set contents of default entry "NotesToutes" to mesNotes
Cette commande transfert les données de la liste mesNotes vers la p-list.
La variable mesNotes est une liste de la forme {"aa", "bb",....} obtenue par définition d'une liste initiale, ou à partir de la data source de notre tableau.
set mesNotes to content of contents of notesDataSource as list
notesDataSource à été définie à la création de la data source, et mis en variable global pour ne pas à avoir à la redéfinir à chaque fois.
Ne perdons pas de vu que si notre exemple est le stockage de toutes les données d'un tableau dans l'entrée "NotesToutes", une entrée peut être une valeur unique, par exemple un paramètre de vos propres préférences. La p-list "Info.plist" en est un bon exemple.
Et sera appelé où nécessaire, entre autres, impérativement juste avant la fermeture.
Pour cela n'oubliez pas de cocher "should quit" pour l'application .