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

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

我在这个主题上看了很多post,这是我发现的:

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

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

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

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

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

所有这些都被检查/修复,但不起作用。 我有这个工作正常,然后我改变了我在应用程序中显示的video。 自从我更改了文件后,它就停止了工作。

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

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

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

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