0

Je ne l'avais pas rencontré ce avant mais je voulais savoir s'il est possible de stocker des clés avec des caractères spéciaux dans Objective-C/Cocoa Touchcaractères spéciaux dans Objective-C plist

Comme on peut forcer un saut de ligne un NSString avec \ n je voulais stocker quelques valeurs dans une plist (et ils ont besoin d'être les clés). C'est juste environ 20 lignes de données statiques (bien, les clés, les valeurs sont NSNumbers qui sont enregistrées dans un fichier) pour lesquelles je ne veux pas utiliser sqlite, donc c'est un dictionnaire ou un tableau statique que je peux enregistrer disque.

Voici le .plist alt text http://www.davidhomes.net/plist.png

Alors, quand je tente de définir une valeur pour une touche sans caractères spéciaux tout va bien. Mais en essayant de mettre, disons, 'Largeur jambe \ n ou Height' retourne

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFDictionary setObject:forKey:]: attempt to insert nil key' 

étant l'argument d'un NSString = @ "Largeur jambe \ n ou hauteur"

Toute aide est appréciée

Meilleures salutations david

Répondre

1

la chaîne dans l'éditeur de plist est la chaîne séquence d'échappement. Donc, je préfère souvent garder des expressions régulières dans le fichier plist, en utilisant l'éditeur de plist.

Ainsi, pour l'entrée Leg Width\n or Height, la clé à utiliser est

[dict objectForKey:@"Leg Width\\n or Height"] 

Notez que vous mettez une barre oblique inverse littérale dans l'entrée plist.

+0

Ou entrez le saut de ligne dans l'éditeur de plist en tapant option-return. –

+0

salut les gars, merci à la fois pour les réponses. Je suis allé avec la solution de Johan car il est plus rapide d'ouvrir les plistes sous forme de fichier texte brut et de retour que de retourner à mon code et de remplacer tous les appels à la fonction qui sauvegarde le dictionnaire pour que l'argument scape devienne inchangé –