pathForResource inDirectory问题

时间:2010-02-24 16:12:29

标签: objective-c cocoa

我想在WebView中从Resources加载html文件。

资源中的

我有:

的test.html

testfolder->的test.html

此代码完美无缺:

[[webview1 mainFrame] loadRequest:
 [NSURLRequest requestWithURL:
  [NSURL fileURLWithPath:
   [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"]]]];

和这一个 - 崩溃应用程序(SIGABRT):

[[webview1 mainFrame] loadRequest:
 [NSURLRequest requestWithURL:
  [NSURL fileURLWithPath:
   [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"  inDirectory:@"testfolder" ]]]];

如何从文件夹中获取文件?

5 个答案:

答案 0 :(得分:8)

您正在以正确的方式进行操作,这意味着您的文件/目录名称中存在拼写错误,或者“testfolder”目录未包含在您的应用程序包中。

确保“testfolder”作为文件夹(不是组)位于XCode项目的Resources部分中。

构建应用程序时,请查看“构建结果”窗口;你应该看到那里说“copy test.html”和“copy testfolder”的步骤。

请注意(在为模拟器构建时),您还可以直接检查应用程序包的内容 - 查看库/应用程序支持/ iPhone模拟器/用户/应用程序

答案 1 :(得分:1)

NSURL fileURLWithPath的文档:说

  

<强>参数

     

路径

     

NSURL对象将表示的路径。路径应该是有效的   系统路径。如果路径以a开头   代字号,首先必须扩展   stringByExpandingTildeInPath。

     

为此参数传递nil会产生异常。

和NSBundle pathForResource:ofType:inDirectory:

  

返回值

     

资源的完整路径名   文件或如果文件不能,则为nil   位于

可能是文件不在您指定的目录路径中吗?

答案 2 :(得分:1)

创建&#34;组&#34;在XCode中,不会在你的应用包中创建一个真实的目录。

您需要在项目中使用以下方法将目录导入应用程序&#34;测试&#34;:

  1. 文件 - &gt;选择&#34;添加要测试的文件&#34;
  2. 选择要导入的目录
  3. 在弹出窗口中,确保选择&#34;将项目复制到目标组的文件夹&#34;和#34;为任何添加的文件夹&#34;
  4. 创建文件夹参考

    点击&#34;添加&#34;

    你做完了!

    目录应显示为蓝色而不是黄色。

答案 3 :(得分:0)

您的代码看起来正确 您确定您的构建中包含 testfolder 文件夹吗?

如果没有,您对pathForResource:ofType:inDirectory:的调用将返回nil。 根据{{​​3}},为fileURLWithPath:class方法的参数传递nil会产生异常。

要检查您的文件夹是否包含在构建过​​程中,请展开“复制捆绑资源”构建阶段,然后查找您的文件夹。如果不存在,请将其拖放到其中。

检查您是否正确添加它的方法是导航到您构建的应用程序,右键单击它并选择“显示包内容”项。

答案 4 :(得分:0)

  1. 如果要从目录加载,首先必须使用create directory references将目录添加到项目中(以便在Copy Bundle Resources中获得带有主文件夹名称和的蓝色图标不是单个文件!)

  2. 根本不要使用in directory参数。只需使用斜杠(“/”)的全局路径,而不是像Windows一样使用反斜杠(“\”)。