在模拟器和设备之间访问资源的差异?

时间:2010-06-07 17:26:55

标签: iphone cocoa-touch ipad ios-simulator

在iPhone模拟器上访问捆绑资源的方式与设备(在我的情况下是iPad)之间是否存在一些差异?我可以访问前者的文件,但不能访问后者。

NSString *filePath = [NSString stringWithFormat:@"%@%@",[[NSBundle mainBundle] bundlePath], @"/AppResources/html/pages/quickHelp.html"];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath];
// fileExists == YES in the debugger on both the simulator and the device

NSString *path = [NSString stringWithFormat:@"AppResources/html/pages/%@", contentsFileName];
NSString *pathForURL = [[NSBundle mainBundle] pathForResource:path ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:pathForURL isDirectory:NO];

上面的代码在模拟器中工作正常,但在设备上pathForResource:path返回nil,所以最后一行抛出'nil string parameter'异常。

我错过了一些明显的东西吗?

编辑:当然,在上面的@“quickHelp”正在contentsFileName var中传递。

edit2:如果它有所不同,在我的构建设置中,“Base SDK”设置为“iPhone Device 4.0”,“iPhone OS Deployment Target”设置为“iPhone OS 3.1.3”。可能有影响的任何其他设置?

2 个答案:

答案 0 :(得分:1)

<强> [忽略]
我注意到你的* filePath上有一个前导'/'但* path上没有(在AppResources之前)
[/忽略]

<强> [编辑]
    [[NSBundle mainBundle] pathForResource:@“quickHelp”ofType:@“html”inDirectory:@“AppResources / html / pages”]]
[/编辑]

答案 1 :(得分:1)

我相信iPhone上的文件系统区分大小写。用实际文件检查你的案例。