Problème mise à jour plist file
Karoxys
Membre
Bonjour,
J'ai un soucis concernant la mise à jour de mon fichier plist.
Plus précisément cette mise à jour fonctionne sur le simulateur mais pas sur mon device (iPad).
Voici ma méthode permettant de mettre à jour mon fichier.
Voici le code permettant de récupérer la nouvelle valeur.
Avez-vous une idée ?
Merci pour vos retour, car je coince un peu.
K.
J'ai un soucis concernant la mise à jour de mon fichier plist.
Plus précisément cette mise à jour fonctionne sur le simulateur mais pas sur mon device (iPad).
Voici ma méthode permettant de mettre à jour mon fichier.
<br />
+(void)updateConfigTimerWithString:(NSNumber *) newConfigTimer<br />
{<br />
// Initialiser des variables pour la lecture du fichier plist.<br />
NSString *path = [[NSBundle mainBundle] pathForResource:@"settings" ofType:@"plist"];<br />
if (path != nil) {<br />
NSMutableDictionary *dictForFile = [[NSMutableDictionary alloc] initWithContentsOfFile:path];<br />
[dictForFile setObject:newConfigTimer forKey:@"configTimer"];<br />
[dictForFile writeToFile:path atomically:YES];<br />
NSLog(@"- [SettingsProperty updateConfigTimerWithString:] PlistFile updated with %@",[[dictForFile objectForKey:@"configTimer"] stringValue]);<br />
[dictForFile release];<br />
}else {<br />
NSLog(@"- [SettingsProperty updateConfigTimerWithString:] The plist file settings doesn't exist.");<br />
}<br />
}<br />
Voici le code permettant de récupérer la nouvelle valeur.
<br />
#pragma mark - getConfigTimer -<br />
+(int)getNewConfigTimer<br />
{<br />
// Initialiser des variables pour la lecture du fichier plist.<br />
NSString *path = [[NSBundle mainBundle] pathForResource:@"settings" ofType:@"plist"];<br />
int timer = 0;<br />
if (path != nil) {<br />
NSMutableDictionary *dictForFile = [[NSMutableDictionary alloc] initWithContentsOfFile:path];<br />
timer = [[dictForFile objectForKey:@"configTimer"] intValue];<br />
NSLog(@"TIMER : %i",timer);<br />
[dictForFile release];<br />
}else {<br />
NSLog(@"- [SettingsProperty updateConfigTimerWithString:] The plist file settings doesn't exist.");<br />
}<br />
<br />
return timer;<br />
}<br />
Avez-vous une idée ?
Merci pour vos retour, car je coince un peu.
K.
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
La bonne méthode pour ce que tu cherche à faire est d'utiliser NSUserDefault et chargé le contenu de ton plist comme valeur par défaut pour les préférences de l'utilisateurs.
Concrètement cela va créer un autre fichier plist dans le dossier Library de l'utilisateur pour ton application et de fait permettre l'écriture.
Je regarde ça ce soir !!
Merci !!
K.
Tout fonctionne merci.
Voici le code pour ceux qui rencontre le problème :
WithString mais tu demande un NSNumber ?
Normalement c'est setValue: forKey:
Et pourquoi ne pas utiliser directement intForKey ?
Oui, toutes ses remarques sont judicieuses /smile.png' class='bbc_emoticon' alt=':)' />
C'est entièrement ma faute, je n'ai pas revu mon code avant de poster.
Mais dans mon appli c'est écrit correctement.
Désolé ...
Je fais toujours 2 étapes :
J'en étais à l'étape 1, lors du post.
Voici mon code propre :
K.
Concernant la convention de nommage, en ObjC on ferait plus setConfigTimerWith... et configTimer.
C'est mieux de se conformer aux habitudes du milieu si quelqu'un doit reprendre ton code un jour.
K.