I have a bunch of directories and files in my app, for instance images/misc/mainmenu_background.
. I'm running the following code in the "iPad Simulator 3.2":
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];
After this call, images
contains the path /Users/wic/Library/Application Support/iPhone Simulator/3.2/Applications/8F67150B-71E6-4735-8CC6-38B3CE6D3568/Foo.app/images
.
But images_misc
and images_misc_file
are nil
. Double-checking my file system to check if the file is there:
$ 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
Apparently the file is there.
If I switch to "iPad Simulator 4.0", or any other simulator version for that matter everything works as expected.
Is there something wrong with my setup, or is this correct behavior for NSBundle
in iPad 3.2? I have no actual physical iPad to test it on unfortunately.
If you need to access a file in a directory, you should be using -[NSBundle pathForResource:ofType:inDirectory:]
instead. So your code should instead look like
NSString *images_misc_file = [[NSBundle mainBundle] pathForResource:@"mainmenu_background" ofType:@"png" inDirectory:@"images/misc"];