无法使用 [[NSBundle mainBundle] pathForResource ofType inDirectory] 加载文件
Posted
技术标签:
【中文标题】无法使用 [[NSBundle mainBundle] pathForResource ofType inDirectory] 加载文件【英文标题】:Can not load file using [[NSBundle mainBundle] pathForResource ofType inDirectory] 【发布时间】:2014-07-02 17:54:19 【问题描述】:我有一个目录,其中包含我需要添加到我的项目中的网站。我将使用uiwebview
加载它。
我尝试了几种添加方法,均不成功。这是我尝试的最后一种方式:
将整个网站目录复制到我的项目目录(实际物理文件夹)。 之后,将目录拖到我的 xcode 项目中,并勾选“为任何添加的文件夹创建文件夹引用” 然后我查看了“构建阶段 -> 复制捆绑资源 -> ...”,我看到它在那里
加载我的网页时:
-(void)loadUrl
NSString *str = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"websiteDir"]; // THIS IS RETURNING NIL!
NSURL *url = [NSURL URLWithString:str];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
我做错了什么?
【问题讨论】:
Xcode的项目树中,文件夹是黄色还是蓝色? 你试过[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]
【参考方案1】:
这是错误的:
您将 str 作为路径但然后调用 URLWithString... 但 str 不是 URLString 而是路径
要么使用url = [NSURL fileUrlWithPath:str]
或者使用- (NSURL *)URLForResource:(NSString *)name withExtension:(NSString *)extension subdirectory:(NSString *)subpath
的方法
样本
-(void)loadUrl
NSURL *url = [[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html" subdirectory:@"websiteDir"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
【讨论】:
检查它是否在目标中并检查 CaSe - ios 区分大小写以上是关于无法使用 [[NSBundle mainBundle] pathForResource ofType inDirectory] 加载文件的主要内容,如果未能解决你的问题,请参考以下文章
`NSBundle.mainBundle().URLForResource` 总是返回 `nil`
使用来自 [[NSBundle mainBundle] resourcePath] 的路径
使用 [NSBundle mainBundle] pathForResource: ofType:inDirectory: 访问文件