pathForResource产生不稳定的null

时间:2011-07-02 00:15:54

标签: iphone objective-c cocoa-touch

将shader-glsl文件从一个xcode项目添加到另一个xcode项目时遇到了一些问题。我现在完全感到困惑,因为我无法创建文件路径,只需拖入xcode即可。 我已多次检查拼写,“在发现者中显示”,但仍有问题......

这是我添加到xCode的文件示例,我甚至没有把它们放到子目录中以排除这些问题:     Screenshot

现在我的代码:

    NSLog(@"Filepath of Tools-image: %@",[[NSBundle mainBundle] pathForResource:@"tools" ofType:@"png"]);
    NSLog(@"Filepath of mo-tut is: %@",[[NSBundle mainBundle] pathForResource:@"mo" ofType:@"tut"]);
    NSLog(@"Filepath of FragShader-fsh is: %@",[[NSBundle mainBundle] pathForResource:@"fragshader" ofType:@"fsh"]);

在运行时我得到这个输出:

2011-07-02 02:03:33.516 windowconfig[16192:707] Filepath of Tools-image: /var/mobile/Applications/BC82AD2C-B8B9-4751-80A2-31EC5ACEC9C2/windowconfig.app/tools.png
2011-07-02 02:03:33.526 windowconfig[16192:707] Filepath of mo-tut is: /var/mobile/Applications/BC82AD2C-B8B9-4751-80A2-31EC5ACEC9C2/windowconfig.app/mo.tut
2011-07-02 02:03:33.531 windowconfig[16192:707] Filepath of FragShader-fsh is: (null)

拜托,有没有人对此有所了解?

编辑:“tools.png”目前是我在标签栏上使用的图标,它位于资源的子文件夹中,只是一个比较测试。如果你们想知道为什么我没有打开截图中其他文件的路径。

编辑:我在最近两个小时里像疯了一样使用“干净”。 “fragshader.fsh”显然不会被复制到“windowconfig.app”包中,即使我将它添加到项目中的方式与我添加“mo.tut”的方式相同,而且这个是在bundle包中。我怎样才能确保它被复制?

EDIT3:在Inspector中检查两个文件的目标成员资格,但不会复制着色器。

解决方案:

在Target-Build Phases下,该文件不在“copy files to bundle”列表中。 我手动添加了它,但仍然奇怪的是,在我将文件添加到项目后,它没有自动添加。

1 个答案:

答案 0 :(得分:2)

您是否确定fragshader.fsh处于复制文件步骤中? (即确保它实际存在于生成的应用程序包中)。