{{tag>fichier}}
====== Lire et écrire un fichier de propriétés ======
La méthode ci-dessous permet d'écrire et de lire un fichier de propriétés. Il existe peut-être d'autres méthodes, mais je ne les ai pas encore découvertes. Cette méthode peut évidemment être utilisée pour stocker d'autres données que des propriétés.
===== Principe fonctionnel =====
* Les données sont stockées sous une forme clé / valeur dans un fichier XML
* Le fichier est lisible par un humain aussi bien que par le programme
* Le fichier peut être facilement modifié par un humain ou par un programme
* Les données peuvent être facilement organisées : elles sont stockées dans des dictionnaires qui sont eux-même stockés dans un tableau.
* Une fois les propriétés répertoriées, elles sont facilement écrites dans un fichier, qui peut tout aussi facilement être lu lorsque c'est nécessaire.
===== Créer le tableau des propriétés =====
// l'objet proprietes stockera toutes les valeurs de propriétés
NSMutableArray *proprietes = [[NSMutableArray alloc] init];
// L'objet propriete est utilisé pour stocker un groupe logique de propriété.
NSMutableDictionary *propriete;
// l'objet propriete est initialisé pour le groupe 1
propriete = [NSMutableDictionary dictionary];
[propriete setObject:@"valeurProp1Groupe1" forKey:@"prop1Groupe1"];
[propriete setObject:[NSNumber numberWithInt:200] forKey:@"prop2Groupe1"];
// propriete est ajouté au tableau proprietes
[proprietes addObject:propriete];
// l'objet propriete est à nouveau initialisé pour un nouveau groupe
propriete = [NSMutableDictionary dictionary];
[propriete setObject:@"valeurProp1Groupe2" forKey:@"prop1Groupe2"];
[propriete setObject:[NSNumber numberWithInt:200] forKey:@"prop2Groupe2"];
// propriete est ajouté au tableau proprietes
[proprietes addObject:propriete];
===== Écrire les propriétés dans un fichier =====
[proprietes writeToFile:@"/tmp/proprietes.plist" atomically:YES];
* stocke le fichier sous la forme suivante
prop1Groupe1
valeurProp1Groupe1
prop2Groupe1
200
===== Lire le fichier des propriétés =====
NSArray *proprietes = [NSArray arrayWithContentsOfFile:@"/tmp/proprietes.plist"];
for (NSDictionary *d in proprietes)
{
// Les propriétés sont par exemple exploitables grâce à objectForKey:(NSString *)key
}