iphone - quedan - itunes
dictionaryWithContentsOfFile devolviendo nil desde mi archivo de lista de propiedades (1)
Estoy aprendiendo cómo usar archivos plist para almacenar datos en mi aplicación de iPhone. He estado leyendo un montón de preguntas sobre plist y dictionaryWithContentsOfFile en este sitio, pero no puedo ver lo que estoy haciendo mal.
La siguiente línea devuelve nil ("El diccionario es nulo" para la consola).
NSLog(@"The dictionary is %@",[NSDictionary dictionaryWithContentsOfFile:@"myFile"]);
El archivo myFile.plist está en la carpeta de recursos y contiene algunas cadenas:
<?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>name</key>
<string>john</string>
<key>aname</key>
<string>jen</string>
</dict>
</plist>
¿Me estoy perdiendo de algo?
De la documentación ...
+ (id)dictionaryWithContentsOfFile:(NSString *)path
Parámetros
camino
Un nombre de ruta completo o relativo. El archivo identificado por ruta debe contener una representación de cadena de una lista de propiedades cuyo objeto raíz es un diccionario.
Valor de retorno
Un nuevo diccionario que contiene el diccionario en la ruta, o nulo si hay un error de archivo o si el contenido del archivo es una representación inválida de un diccionario.
Entonces, probablemente deba construir una ruta completa a su archivo plist (o pasar una ruta relativa adecuada. Me sorprendería mucho si "myFile" es una ruta relativa adecuada). Si construyes un camino correcto pero luego sigues sin recuperar nil
, entonces probablemente hayas obtenido un archivo plist no válido.
La forma más fácil de obtener una ruta para un archivo en su carpeta de recursos es la siguiente:
NSString * plistPath = [[NSBundle mainBundle] pathForResource:@"myFile" ofType:@"plist"];
Eso creará una ruta para un archivo llamado "myFile.plist" dentro de su carpeta de Recursos.