使用 [mainBundle pathForResource] 的相同代码行在一个项目中失败,但在另一个项目中有效
Posted
技术标签:
【中文标题】使用 [mainBundle pathForResource] 的相同代码行在一个项目中失败,但在另一个项目中有效【英文标题】:Identical line of code using [mainBundle pathForResource] fails in one project but works in another 【发布时间】:2011-11-22 02:55:55 【问题描述】:在我的代码中我想打开一个html文件,所以添加了以下代码行:
NSString* path = [[NSBundle mainBundle] pathForResource:@"cheese" ofType:@"html"];
但由于路径在执行后为零而失败。文件 cheese.html 存在并已添加到项目的资源中。
我不能,而且仍然无法弄清楚为什么它不起作用。我还有一些其他项目可以打开和读取文件,因此作为实验,我将失败的代码行复制到了这些其他项目之一,并随之从项目中拖放了 cheese.html 文件。 '不适用于其他项目(从 xcode 的分层项目文件视图中拖放)和宾果游戏 - 该行执行并且路径在其他项目中不为零。
所以我完全迷惑了,为什么它在一个项目中起作用而在另一个项目中不起作用?
两者的代码行完全相同,并且当文件被拖放时,它是同一个文件,并且当文件是从 xcode 本身中拖动时,它证明文件已添加到项目资源中。那为什么还会失败呢?
【问题讨论】:
几个小时后我放弃了,放弃了这个项目,选择了一个可行的项目,并删除了所有不相关的部分。不知道为什么它从来没有奏效。 您是否检查过以使文件在物理上位于正确的位置,包括而不是位于另一个子文件夹等中。 【参考方案1】:检查一下:
在左侧的管理器中选择您的项目。然后在下一个导航器中选择您的目标名称。然后选择构建阶段“选项卡”。您将看到“复制捆绑资源”部分。确保您要查找的资源在此处列出。如果没有添加它。
【讨论】:
【参考方案2】:对于遇到此问题的任何人来说,另一种可能的解决方案:有时文件可能属于 不是 mainBundle
的包 - 在这种情况下,最简单的解决方案是使用 @987654322 @ 相反,使用当前类正在使用的包。
【讨论】:
以上是关于使用 [mainBundle pathForResource] 的相同代码行在一个项目中失败,但在另一个项目中有效的主要内容,如果未能解决你的问题,请参考以下文章