在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”。可能有影响的任何其他设置?
答案 0 :(得分:1)
<强> [忽略] 强>
我注意到你的* filePath上有一个前导'/'但* path上没有(在AppResources之前)
的 [/忽略] 强>
<强> [编辑] 强>
[[NSBundle mainBundle] pathForResource:@“quickHelp”ofType:@“html”inDirectory:@“AppResources / html / pages”]]
的 [/编辑] 强>
答案 1 :(得分:1)
我相信iPhone上的文件系统区分大小写。用实际文件检查你的案例。