我正在尝试在UIWebView
中打开一个文件(index.html)。当文件在根目录中并以这种方式加载时,一切正常:
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"]isDirectory:NO]]];
但是当我输入inDirectory参数时:
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"html" inDirectory:@"files"]]]];
我收到此错误:
**由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' * - [NSURL initFileURLWithPath:]:nil字符串参数'
我已经检查了我的目标,该文件列在“复制捆绑资源”列表中
答案 0 :(得分:2)
在构建应用程序时,加载到捆绑包中的所有资源都会扁平化为单个目录。
你只需要使用:
NSURL *bundleURL = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"html"];
NSURLRequest *request = [NSURLRequest requestWithURL:bundleURL];
[self.webView loadRequest:request];
在Xcode中使用以下目录结构(test.html在Resources组中):
如果您在软件包中安装它时查看软件包应用程序,它看起来像:
删除Xcode中的所有“组”或文件夹。 (注意test.html在其他所有内容的根目录中)
底线,当从资源包中加载资源时,请保持简单并使用URLForResource:withExtension: