Tengo una cadena plist estructurada, que se obtiene dinámicamente (no desde el sistema de archivos). ¿Cómo convertiría esta cadena a un NSDictionary?Parse Plist (NSString) en NSDictionary
He intentado convertir NSData y luego en un NSDictionary con NSPropertyListSerialization, pero devuelve "[NSCFString objectAtIndex:]: selector no reconocido enviado a la instancia 0x100539f40" cuando intento acceder al NSDictionary, mostrando que mi Dictionary was not creado con éxito
Ejemplo de la NSString (es decir, los datos de 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>
Gracias!
+1 Su solución parece muy bien pulida, usando inmutables para crear un NSDictionary y recordando lanzar el error si hay uno que valga puntos de bonificación. :-) –
Casi llamé a eso un sobre-lanzamiento. Um, wow. Esa API viola por completo las reglas de administración de memoria al requerir que la persona que llama libere esa cadena de error. –
De acuerdo con las Notas de la versión, cambió para no tener esa infracción en Leopard. Vale la pena buscar. Hay un informe de error al respecto: http://openradar.appspot.com/5563963 –