2010-02-24 39 views
1

我想从WebView中的资源加载HTML文件。pathForResource inDirectory问题

在资源

我有:

的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" ]]]]; 

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

回答

8

你会了解它的正确方法,这样就意味着要么你有你的文件/目录名或“testfolder”目录中的错别字是没有得到包含在您的应用程序包。

确保“testfolder”是你的XCode项目的资源部分为一个文件夹(而不是组)。

查看“生成结果”,当你建立你的应用程序窗口;您应该在那里看到说“复制test.html”和“复制测试文件夹”的步骤。

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

+0

谢谢!这种帮助。 和提示 - 该组显示在黄色文件夹图标的资源,与蓝色文件夹图标的文件夹。 – nukl 2010-02-24 16:43:17

1

为NSURL fileURLWithPath文档:说

参数

路径

路径的NSURLØ bject将代表。路径应该是有效的 系统路径。如果路径始于 代字号,则必须首先使用 stringByExpandingTildeInPath进行扩展。

此参数传递零产生一个例外。

和一个NSBundle pathForResource:ofType:inDirectory:

返回值

的完整路径为资源 文件或零如果文件不能被 定位。

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

0

您的代码看起来正确。
你确定你的文件夹 testfolder被包含在构建?

如果不是,则您对pathForResource:ofType:inDirectory:的调用将返回nil。 并根据documentation of the NSURL class,传递给fileURLWithPath:class方法的参数nil产生一个异常。

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

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

0
  1. 如果你想从一个目录中加载,你首先得添加目录项目与创建目录引用(这样在复制包资源你与主文件夹名称和不是蓝色图标个别文件!)

  2. 根本不要使用in目录参数。只需在Windows中使用带斜杠(“/”)的全局路径而不是反斜杠(“\”)即可。

1

在XCode中创建“组”不会在应用程序包中创建真实的目录。

您需要使用下面的方法在您的项目“测试”导入目录到您的应用程序:

  1. 文件 - >选择“添加文件,以测试”
  2. 选择要导入的目录
  3. 在弹出的窗口中请务必选择“复制项目到目的地组的文件夹”和“创建任何附加文件夹,文件夹引用”

命中“添加”

你完成了!

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