无法使用 [[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

NSBundle.mainBundle() 返回 nil

使用来自 [[NSBundle mainBundle] resourcePath] 的路径

NSBundle mainBundle 返回 nil

使用 [NSBundle mainBundle] pathForResource: ofType:inDirectory: 访问文件