6

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

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

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

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

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

  4. 项目可能缺少媒体框架。要解决此问题,请单击您的项目菜单 -> 单击目标 -> 单击以展开“Link Binary With Libraries”。现在选择 MediaPlayer.framework 并构建代码。

  5. 如果一切都失败了,请清理项目,然后重试。

所有这些都经过检查/修复,但不起作用。我的工作正常,然后我更改了我在应用程序中显示的视频。由于我更改了文件,它停止工作。

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

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

4

1 回答 1

4

你说它在模拟器上工作而不是在设备上工作?可能您应该尝试在第一次启动时将文件复制到应用程序沙箱文件夹之一并像这样访问它:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pathForTheFile= [documentsDirectory stringByAppendingPathComponent:     @"multiplying.m4v"];
于 2011-08-03T20:04:21.790 回答