2010-02-07 10 views
0

Je suis en train d'analyser un fichier de données et d'ajouter la valeur-clé lue à partir du fichier dans un NSMutableDictionary.NSMutableDictionary affiche parfois la valeur ou la clé avec des guillemets

J'ai remarqué que lorsque j'imprime le contenu du dictionnaire dans le débogueur, i.e.: po MyDictionary

certaines entrées ont des citations autour d'eux et certains ne le font pas. Pourquoi est-ce?

Par exemple, je vois:

{ 
    "file_path"  = "../dat.txt" 
    another_path  = "aa.dat" 
    yet_another_path = bb.txt 
} 

J'utilise la ligne suivante pour extraire la clé et la valeur du fichier, après avoir analysé les données vers le bas pour que les octets essentiels

key_str = [[NSString alloc] initWithBytes:[data bytes] 
            length:total_bytes 
           encoding:NSUTF8StringEncoding]; 

de val_str est analysé de la même manière.

Merci

+0

Quel débogueur (y compris la version) utilisez-vous? Lorsqu'il est exécuté avec GNU gdb 6.3.50-20050815 (la version fournie avec XCode 3.2.1) à partir de la ligne de commande, toutes les clés et valeurs que je vois sont des guillemets doubles. – outis

+0

Ouais ... "bb.txt" serait cité. Le débogueur, btw, n'a absolument rien à voir avec le format. La chaîne est entièrement générée dans les frameworks du système. – bbum

+0

duplication possible de [NSMutableDictionary est l'ajout de citations aux clés et valeurs - pourquoi?] (Http://stackoverflow.com/questions/2471398/nsmutabledictionary-is-adding-quotes-to-keys-and-values-why) – Apurv

Répondre

1

Vous ne devriez pas utiliser la sortie des -debugDescription ou -description méthodes aux fins de l'archivage des données. Le format est un détail d'implémentation et peut être modifié.

Je suggère que vous vous tourniez vers NSPropertyListSerialization (et connexes) pour résoudre vos besoins d'archivage. Il offre un format XML, si vous avez besoin de quelque chose qui s'apparente à la lisibilité humaine.

+0

Merci pour les réponses sofar. J'utilise gdb 6.3.50-20050815 sur un Mac. Le problème est que les guillemets finissent par faire partie de la clé. Ainsi, dans l'exemple affiché: po [myDictionary objectForKey: @ "file_path"] cela échoue parce que "file_path" a des guillemets autour d'eux dans le dictionnaire. Je ne sais pas comment les citations sont arrivées. C'est ce que je voudrais comprendre et me débarrasser. –

+0

Je ne peux pas le dire assez: ** Ne pas utiliser -debugDescription ou -description pour générer vos clés. ** Ces méthodes ne sont pas conçues à d'autres fins que comme un outil de débogage – bbum

+0

Je ne pense pas que j'ai communiqué clairement le première fois. Je ne génère donc pas mes clés à partir du débogueur; Je les lis à partir d'un fichier de données contenant une paire "nom de variable" - "valeur". J'affiche seulement la sortie de débogage comme information supplémentaire aux fins de cette discussion. Donc, le "key_str" est ce que j'ai analysé dans un fichier de données. –

0

Je rencontre le même problème. Il semble être un problème avec l'analyseur JSON mettant des citations autour des clés qui contiennent le caractère de soulignement. Donc, une clé du nom de fichier est ok mais une clé avec nom_fichier est renvoyée sous "nom_fichier".