Mar*_*man 12 xcode nsbundle ios-simulator
例如,我的应用程序中有一堆目录和文件images/misc/mainmenu_background..我在"iPad模拟器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];
Run Code Online (Sandbox Code Playgroud)
在此调用之后,images包含路径/Users/wic/Library/Application Support/iPhone Simulator/3.2/Applications/8F67150B-71E6-4735-8CC6-38B3CE6D3568/Foo.app/images.
但是images_misc,images_misc_file是nil.仔细检查我的文件系统以检查文件是否存在:
$ 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
Run Code Online (Sandbox Code Playgroud)
显然文件就在那里.
如果我切换到"iPad模拟器4.0",或任何其他模拟器版本的一切都按预期工作.
我的设置有问题,或者NSBundle在iPad 3.2中这是正确的行为吗?不幸的是,我没有真正的物理iPad来测试它.
Lil*_*ard 23
如果您需要访问目录中的文件,则应该使用-[NSBundle pathForResource:ofType:inDirectory:].所以你的代码看起来应该是这样的
NSString *images_misc_file = [[NSBundle mainBundle] pathForResource:@"mainmenu_background" ofType:@"png" inDirectory:@"images/misc"];
Run Code Online (Sandbox Code Playgroud)
mt_*_*mt_ 10
尽管已经回答了这个问题,但我想补充一点,它-[NSBundle pathForResource:ofType:inDirectory:]具有不同的区分大小写,具体取决于它是iPhone模拟器还是iPad模拟器或设备.例如,iPhone模拟器4.0似乎不区分大小写,而在iPad模拟器3.2和设备上 - 区分大小写.因此,如果案例不匹配,可能无法在IPad Simulator 3.2或设备上找到在iPhone 4.0模拟器上找到的文件.
| 归档时间: |
|
| 查看次数: |
21251 次 |
| 最近记录: |