iOS:[NSBundle pathForResource:ofType:inDirectory]返回nil?

时间:2015-08-22 05:12:57

标签: objective-c nsurl nsbundle

NSURL *url =[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"index" ofType:@"html"inDirectory:@"www"]];

给我错误

[NSURL initFileURLWithPath:]: nil string parameter'

我已经将文件夹'www'复制到我的项目但是给了我错误,如果我不写inDirectory:@“www”那么它将采取路径,但不显示我想要显示的确切页面

1 个答案:

答案 0 :(得分:1)

当您向项目添加资源时,它们都会被复制到应用程序包的根目录(默认情况下)。您可能在项目中设置的任何类型的黄色子文件夹都不会影响资源在实际应用中的组织方式。

在应用程序的最终资源包中结束实际文件夹的唯一方法是在Xcode项目中使用蓝色文件夹。

黄色文件夹只是“群组”。

蓝色文件夹是“文件夹引用”。当您选择“将文件添加到{Project Name} ...”并在添加文件对话框中选择“创建文件夹引用”选项(而不是“创建组”选项,这会导致黄色组文件夹)时,会创建这些选项。

任何蓝色文件夹引用及其内容都以相同的结构放在您的应用程序包中。

因此,对于您的情况,您需要将“www”文件夹添加为文件夹引用而不是普通组。完成此操作后,带有inDirectory:参数的原始代码将按预期运行。

如果您有任何问题,可以随时查看构建应用程序的.app文件夹,以验证是否已创建所需的目录结构。