{{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 }