Parse Plist (NSString) en NSDictionary

Así que tengo una cadena estructurada plist, que se obtiene dinámicamente (no desde el sistema de archivos). ¿Cómo convertiría esta cadena a un NSDictionary?

Intenté convertir NSData y luego en NSDictionary con NSPropertyListSerialization, pero devuelve “[NSCFString objectAtIndex:]: selector no reconocido enviado a la instancia 0x100539f40” cuando bash acceder al NSDictionary, lo que demuestra que mi diccionario no se ha creado correctamente.

Ejemplo de NSString (que es la información plist):

    Key1  Test1  Key2 Value2 Key3 value3    

¡Gracias!

Ver serializar una lista de propiedades

 NSData* plistData = [source dataUsingEncoding:NSUTF8StringEncoding]; NSString *error; NSPropertyListFormat format; NSDictionary* plist = [NSPropertyListSerialization propertyListWithData:plistData mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&error]; NSLog( @"plist is %@", plist ); if(!plist){ NSLog(@"Error: %@",error); [error release]; } 

Prueba esto:

 NSData * data = [yourString dataUsingEncoding:NSUTF8StringEncoding]; NSString *errorDesc = nil; NSPropertyListFormat format; NSDictionary * dict = (NSDictionary*)[NSPropertyListSerialization propertyListFromData:data mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&errorDesc]; 

Intenté convertir NSData y luego en NSDictionary con NSPropertyListSerialization, pero devuelve “[NSCFString objectAtIndex:]: selector no reconocido enviado a la instancia 0x100539f40” cuando bash acceder al NSDictionary, lo que demuestra que mi diccionario no se ha creado correctamente.

No, no muestra tal cosa. Lo que muestra es que trataste de tratar una cadena como una matriz. Tendría que determinar en qué lugar de la lista estaba tratando de obtener una matriz y por qué había una cadena donde esperaba una matriz, es decir, si creó incorrectamente la plist ( colocando una cadena en la que quería poner una matriz ) o lo están examinando incorrectamente (la presencia de una cadena es correcta, su expectativa posterior de una matriz es incorrecta).