Tengo un montón de directorios y archivos en mi aplicación, por ejemplo images/misc/mainmenu_background.
. Estoy corriendo el código siguiente en el "Simulador de iPad 3.2":NSBundle pathForResource devuelve nil con subdirectorios
NSString *images = [[NSBundle mainBundle] pathForResource:@"images" ofType:nil];
NSString *images_misc = [[NSBundle mainBundle] pathForResource:@"images/misc" ofType:nil];
NSString *images_misc_file = [[NSBundle mainBundle] pathForResource:@"images/misc/mainmenu_background.png" ofType:nil];
Después de esta llamada, images
contiene la ruta /Users/wic/Library/Application Support/iPhone Simulator/3.2/Applications/8F67150B-71E6-4735-8CC6-38B3CE6D3568/Foo.app/images
.
Pero images_misc
y images_misc_file
son nil
. Comprobando dos veces mi sistema de archivos para verificar si el archivo está allí:
$ ls -l "/Users/wic/Library/Application Support/iPhone Simulator/3.2/Applications/8F67150B-71E6-4735-8CC6-38B3CE6D3568/Foo.app/images/misc/mainmenu_background.png"
-rw-rw-rw- 1 wic staff 30307 16 Feb 21:09 /Users/wic/Library/Application Support/iPhone Simulator/3.2/Applications/8F67150B-71E6-4735-8CC6-38B3CE6D3568/Foo.app/images/misc/mainmenu_background.png
Aparentemente el archivo está allí.
Si cambio a "iPad Simulator 4.0", o cualquier otra versión del simulador para ese asunto, todo funciona como se esperaba.
¿Hay algún problema con mi configuración, o es este comportamiento correcto para NSBundle
en iPad 3.2? No tengo un iPad físico real para probarlo desafortunadamente.
Ok, gracias. El uso de 'inDirectory' parece funcionar. Pero esto significa que el comportamiento ha cambiado (silenciosamente) ya que funciona en versiones posteriores, ¿verdad? –
Parece que cambiaron el método para manejar las rutas completas dadas en el parámetro 'pathForResource:', pero incluso si solo soportas 4.0 y superior, es mejor usar la API correctamente y usar el parámetro 'inDirectory:' para todos los directorios . –
Para el registro, es un marco que estoy usando que lo hace así. Es extraño que Apple haya cambiado este comportamiento sin previo aviso. –