Pb de sérialisation!
tablier
Membre
Pour des raisons d'édition par un utilisateur λ, je souhaite sauver le dictionnaire "langues" sous forme .strings. En cherchant un peu dans la doc et en copiant l'exemple donné dans "Property List Programming Guide for Cocoa" j'ai écrit:
isValidForFormat: retourne YES, mais à la ligne suivante pData = .... j'obtiens l'erreur :
"Property list format kCFPropertyListOpenStepFormat not supported for writing"
Je ne comprends pas l'erreur que je fais! L'exemple d'Apple serait-il faux? Dans la documentation je ne trouve nulle part de restriction à l'utilisation de kCFPropertyListOpenStepFormat!
Qui peut m'aider la dessus?
PS: Je suis sous 10.4.11 avec Xcode 2.5
NSString *error ;<br />NSData *pData ;<br />BOOL tic ;<br /><br /> tic = [NSPropertyListSerialization propertyList:langues<br /> isValidForFormat:NSPropertyListOpenStepFormat] ;<br /> if (tic)<br /> pData = [NSPropertyListSerialization dataFromPropertyList:langues<br /> format:NSPropertyListOpenStepFormat<br /> errorDescription:&error] ;<br /> else<br /> { ....... traitement de l'erreur .......... } ;<br />
isValidForFormat: retourne YES, mais à la ligne suivante pData = .... j'obtiens l'erreur :
"Property list format kCFPropertyListOpenStepFormat not supported for writing"
Je ne comprends pas l'erreur que je fais! L'exemple d'Apple serait-il faux? Dans la documentation je ne trouve nulle part de restriction à l'utilisation de kCFPropertyListOpenStepFormat!
Qui peut m'aider la dessus?
PS: Je suis sous 10.4.11 avec Xcode 2.5
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Au fait en passant si c'est pour sauver un dictionnaire sous forme de fichier "strings", que vient faire l'utilisation d'un NSPropertyListSerialization ?
Les fichiers .strings sont juste des fichiers textes où tu as une ligne par clé, suivi d'un "=" suivi de sa valeur, et ça ne marche que pour les dictionnaires ne contenant que des chaà®nes (pour les clés comme pour les valeurs, et sur un seul niveau hérarchique), puisque c'est fait pour la localisation/traduction.
Après j'ai plus trop souvenir du format "OpenStep" des fichiers PLIST (on a + connu le format XML puis ensuite le format binaire) mais je crois que ça ressemblait plutôt à une structure avec des accolades { } pour quand on décrivait un NSArray ou NSDictionary, avec une indentation selon le niveau de profondeur etc... qui ne correspond pas au cas limitatif des fichiers .strings !
Je me demande si ça ne vaut pas le coup plutôt de faire la procédure d'écriture de ton NSDictionary "langues" toi-même. Je ne sais pas quelle est sa structure, mais si c'est un NSDictionary donc les clés sont les noms des constantes et les valeurs sont la valeur associée à cette constante pour la langue en cours.. Bah un simple parcours de ton NSDictionary (avec une fast-enumeration avec foreach pourquoi pas) et écrire dans un NSString le format [tt]"%@ = %@\;n",key,value[/tt] pour chaque entrée du dico... et écrire cette chaà®ne enfin dans un fichier... et le tour est joué en 5 lignes
Effectivement mon problème est un problème de traduction par des gens qui n'y connaissent rien, mais qui sont capables d'utiliser un éditeur de texte.
Pour info le dictionnaire ne comporte que des strings. Faire la sortie "à la main", je l'ai fait. Je cherche quand même quelque chose de tout fait pour simplifier.
Enfin, merci de m'avoir remis sur les bon rails :P
(En même temps si c'est codable en 5 lignes...)
Si je me rapelle bien, le problème était que les caractères spéciaux n'étaient pas re-codés: Cr et Lf => \n et \r, \ => \\, Tab => \t, " => \" ......etc
C'est la raison qui m'avais fait écrire une sortie "A la main". Suite a ta réponse, j'ai trouvé dans la doc une méthode très simple qui laisse au système le soin du recodage:
Et ça marche comme je le souhaite. :P
Bien vu