使用[mainBundle pathForResource]的相同代码行在一个项目中失败,但在另一个项目中有效

时间:2011-11-22 02:55:55

标签: ios

在我的代码中我想打开一个html文件,所以添加了以下代码行:

NSString * path = [[NSBundle mainBundle] pathForResource:@" cheese" ofType:@" HTML"];

但它失败了,因为执行后路径为零。文件cheese.html存在并已添加到项目的资源中。

我不能,但仍然无法弄清楚它为什么不起作用。我有一些其他项目打开和读取文件,所以作为一个实验,我复制了其他项目之一的代码行,并且随之而来的是我从项目中拖拽/删除了cheese.html文件#39;对另一个项目工作(从xcode的hieararchical项目文件视图中拖放)和宾果游戏 - 该行执行,路径在其他项目中不是零。

所以我完全神秘化了,为什么它在一个项目中工作而不是另一个项目呢?

两者中的代码行完全相同,并且当文件被拖放到同一个文件中时,并且当文件从xcode本身拖出时,它证明该文件已被添加到项目资源中。那为什么还会失败呢?

2 个答案:

答案 0 :(得分:2)

检查一下:

在左侧管理器中选择您的项目。然后在下一个导航器中选择您的目标名称。然后选择构建阶段'选项卡'。您将看到“复制捆绑资源”部分。确保列出您要查找的资源。如果不添加它。

答案 1 :(得分:2)

对于遇到此问题的任何人来说,此问题的另一种可能的解决方案:有时文件可以属于 mainBundle的捆绑包 - 在这种情况下,最简单的解决方案是使用相反,[NSBundle bundleForClass:[self class]]使用当前类正在使用的包。