NSBundle mainBundle pathForResource(也许不是同一个问题)

时间:2011-08-03 18:58:49

标签: ios ipad nsbundle

问题:[NSBundle mainBundle] pathForResource返回null(0x0)

我在这个主题上阅读了很多帖子,这是我发现的:

  1. 确保您尝试获取路径的文件位于项目中。要检查,请在项目文件列表中查找该文件,如果不存在,请将其拖放。

  2. 检查您尝试加载的文件是否正在复制到该应用。要执行此操作,请单击项目文件下的项目(项目文件中包含项目名称的蓝色栏 - >单击目标 - >单击构建阶段 - >单击以展开“复制捆绑资源”,并确保您的文件如果不是,请单击加号,然后添加。

  3. 确保案例完全匹配。 (aka - 模拟器将工作/应用程序将不会出现问题)确保案例完全匹配,否则它将不返回任何内容。要解决此问题,只需在项目中重命名,或在源代码中使用正确的大小写。

  4. 项目可能缺少媒体框架。要解决此问题,请单击项目菜单 - >点击目标 - >单击以展开“链接二进制文件库”。现在选择MediaPlayer.framework并构建代码。

  5. 如果所有其他方法都失败了,请清理项目,然后重试。

  6. 所有这些都经过检查/修复,但无效。我有这个工作正常,然后我改变了我在应用程序中显示的视频。自从我更改了文件后,它就停止了工作。

    NSString *path = [[NSBundle mainBundle] pathForResource:@"multiplying" ofType:@"m4v"];

    问:为什么它是空的?该文件正确匹配/输入,大约10兆。 (文件是否太大?)在模拟器中工作正常,我可以获得图像的路径,这一行之上的一行,没有错误。

1 个答案:

答案 0 :(得分:4)

你说它在模拟器中工作而不在设备上工作? 可能是您应该尝试在首次启动时将文件复制到其中一个应用程序沙盒文件夹并按以下方式访问它:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pathForTheFile= [documentsDirectory stringByAppendingPathComponent:     @"multiplying.m4v"];