2012-03-09 61 views
0

我有一个需要进入我的iPhone应用程序的资源目录的.html文件。我尝试过FILE - > New - > Resource,但似乎没有任何东西符合法案。如何将文件放入我的包的资源目录中?

现在我使用的是一个UIWebView的loadRequest,并有“pathForResource:@”help.htm“...它崩溃时,它找不到help.htm如果我把它放在一个资源directoyr,我相信我仍然可以使用相同的代码没有任何目录预选赛

我如何做到这一点

更新:?

这里是一个UIWebView代码:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    if([[segue identifier] isEqualToString:@"helpSegue"]) { 

     [slWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"iHelp.htm" ofType:@"html"]isDirectory:NO]]]; 


    } 
    else 
     if ([[segue identifier] isEqualToString:@"reportSegue"]) { 
      NSLog(@"reportSegue"); 
     } 
} 

下面是我得到的错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:isDirectory:]: nil string parameter' 
+0

你可以请张贴你所有的UIWebView代码吗? – 2012-03-09 16:14:03

+0

如果所有文件不是源文件,是不是所有文件都会自动复制到Resources目录? – trojanfoe 2012-03-09 16:33:13

+0

再次更新原始文章... – SpokaneDude 2012-03-09 17:07:07

回答

0

我觉得这是你的问题:

[slWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"iHelp.htm" ofType:@"html"]isDirectory:NO]]]; 

您需要忽略从文件名的扩展名,因为它是在一个单独的参数指定:

[slWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"iHelp" ofType:@"htm"]isDirectory:NO]]]; 

然后只需将“iHelp.htm”文件添加到项目中,如同正常一样,确保它被标记为包含应用程序目标。

只要确定,请在“产品”组中点击您的应用,然后选择“在Finder中显示”。然后右键单击.app包(这只是一个文件夹)并选择显示内容以查看实际包含的内容。如果你没有看到你的“iHelp.htm”文件,这意味着它没有被标记为目标的成员。在Xcode中查找并​​选择“iHelp.htm”文件,然后打开实用程序视图。看看下的“目标籍部分,并确保您的应用程序的目标复选框被选中

更新 什么你上述变化看是这样的:

[[NSBundle mainBundle] pathForResource:@"iHelp" ofType:@"htm"] 

中的应用会搜索捆绑为“iHelp.htm”,它在返回nil之前返回htm文件的路径,因为它找不到它(在您查找“iHelp.htm.html”之前,它不存在。你的问题的下一部分是弄清楚为什么这个路径没有正确地转换为URLRequest。你有很多内联,我个人喜欢,但要正确地调试你可能会蚂蚁暂时将它分解成单独的变量。

NSString *iHelpPath = [[NSBundle mainBundle] pathForResource:@"iHelp" ofType:@"htm"]; 
NSLog(@"iHelpPath = %@", iHelpPath); 
NSURL *fileURL = [NSURL fileURLWithPath:iHelpPath]; 
NSLog(@"fileURL = %@", fileURL); 
NSURLRequest *request = [NSURLRequest requestWithURL:fileURL]; 
NSLog(@"request = %@", request); 

,看看,给你。

+0

我按照你的建议去除了.htm,并将参数更改为htm,至少它没有崩溃......但是,它也没有显示文件。将参数更改回“html”并崩溃。如何将文件标记为“包含在应用程序目标中?”(btw,位置设置为“相对于组”) – SpokaneDude 2012-03-09 17:26:57

+0

它看起来像[[NSBundle mainBundle] pathForResource:@“iHelp”ofType:@“htm”]是找到你的资源,这就是为什么它不再崩溃。让我发表另一个解释发生了什么事的答案。 – Cliff 2012-03-09 17:30:07

+0

我编辑了我的答案,而不是发布一个新的答案。 – Cliff 2012-03-09 17:38:57

相关问题