Donc, j'ai une chaîne structurée plist, qui obtient dynamiquement (pas à partir du système de fichiers). Comment je convertirais cette chaîne en NSDictionary. J'ai essayé de convertir NSData puis NSDictionary avec NSPropertyListSerialization, mais il renvoie "[NSCFString objectAtIndex:]: sélecteur non reconnu envoyé à l'instance 0x100539f40" lorsque j'essaie d'accéder au NSDictionary, montrant que mon dictionnaire n'était pas créé avec succès.Parse Plist (NSString) dans NSDictionary
Exemple de NSString (ce sont les données plist):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Key1</key>
<dict>
<key>Test1</key>
<false/>
<key>Key2</key>
<string>Value2</string>
<key>Key3</key>
<string>value3</string>
</dict>
</dict>
</plist>
Merci!
+1 Votre solution semble bien polie - en utilisant immutable pour créer un NSDictionary et en se souvenant de libérer l'erreur s'il y en a un valent des points bonus. :-) –
J'ai presque appelé cela une sur-version. Um, wow. Cette API enfreint totalement les règles de gestion de la mémoire en demandant à l'appelant de libérer cette chaîne d'erreur. –
Selon les notes de publication, il a été modifié pour ne pas avoir cette violation dans Leopard. Ça vaut le coup de chercher. Il y a un rapport de bug à ce sujet: http://openradar.appspot.com/5563963 –