2009-12-19 10 views
4

Je voudrais attribuer une valeur booléenne à une entrée de fichier plist. Je fais ce qui suit:Comment écrire un BOOL à plist?

NSString *aBool = realBoolValue ? @"YES" : @"NO";  
[myplist setValue: aBool forKey:@"boolKey"]; 
[myplist writeToFile: [NSHomeDirectory() stringByAppendingPathComponent: plistFilePath] atomically:NO]; 

Mais l'affectation ne prend jamais. Je fais ce qui précède parce que ce qui suit ne fonctionne pas:

[myplist setValue: realBoolValue forKey:@"boolKey"]; 

Il donne une erreur de type incompatible. Qu'est-ce que je fais mal?

- EDIT ---

plistFilePath est initialisé comme

plistFilePath = [NSHomeDirectory() stringByAppendingPathComponent: @"Library/Preferences/myfile.plist"]; 
+0

Vous n'avez pas indiqué comment vous initialisez 'plistFilePath'; il pourrait être il n'est pas initialisé correctement, ou cela n'existe pas un fichier à ce chemin. – kiamlaluno

+1

Le fichier n'est-il jamais sorti ou existe-t-il un problème spécifique avec cette clé particulière? Si plistFilePath est ce que vous avez décrit ci-dessus, vous aurez un répertoire faux puisque vous essayez d'ajouter NSHomeDirectory deux fois. De plus, le répertoire existe-t-il? – hallski

+0

C'était exactement le problème. Merci. – user230949

Répondre

16

Vous pouvez envelopper dans un objet NSNumber:

[NSNumber numberWithBool:yourBool] 

Utilisez [NSNumber boolValue] lors de la lecture de retour de la valeur de la plist.

+0

Merci. Cela fait la conversion correcte mais la valeur n'est toujours pas économisée dans le plist. Le chemin est correct. Je l'utilise dans Xcode sur le simulateur. Avez-vous des idées sur ce qui pourrait être faux? Il devrait lancer une erreur si le chemin ou les noms de clés sont incorrects à droite? – user230949

+0

Lisez-vous votre plist dans un NSMutableDictionary? – ohhorob

+0

Oui - c'est un NSMutableDictionary. – user230949

0
[NSNumber numberWithBool:yourBool] 

Si vous le faites, vous obtiendrez un numéro lorsque vous appelez [email protected]"boolKey". Mais si vous ajoutez le bool pour la clé dans le fichier plist, vous obtiendrez un NSCFBoolen.