在我的代码中我想打开一个html文件,所以添加了以下代码行:
NSString * path = [[NSBundle mainBundle] pathForResource:@" cheese" ofType:@" HTML"];
但它失败了,因为执行后路径为零。文件cheese.html存在并已添加到项目的资源中。
我不能,但仍然无法弄清楚它为什么不起作用。我有一些其他项目打开和读取文件,所以作为一个实验,我复制了其他项目之一的代码行,并且随之而来的是我从项目中拖拽/删除了cheese.html文件#39;对另一个项目工作(从xcode的hieararchical项目文件视图中拖放)和宾果游戏 - 该行执行,路径在其他项目中不是零。
所以我完全神秘化了,为什么它在一个项目中工作而不是另一个项目呢?
两者中的代码行完全相同,并且当文件被拖放到同一个文件中时,并且当文件从xcode本身拖出时,它证明该文件已被添加到项目资源中。那为什么还会失败呢?
答案 0 :(得分:2)
检查一下:
在左侧管理器中选择您的项目。然后在下一个导航器中选择您的目标名称。然后选择构建阶段'选项卡'。您将看到“复制捆绑资源”部分。确保列出您要查找的资源。如果不添加它。
答案 1 :(得分:2)
对于遇到此问题的任何人来说,此问题的另一种可能的解决方案:有时文件可以属于不 mainBundle
的捆绑包 - 在这种情况下,最简单的解决方案是使用相反,[NSBundle bundleForClass:[self class]]
使用当前类正在使用的包。