ios - NSBundle mainBundle pathForResource(可能不是同一个问题)

标签 ios ipad nsbundle

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

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

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

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

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

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

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

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

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"];

关于ios - NSBundle mainBundle pathForResource(可能不是同一个问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6931768/

相关文章:

cocoa-touch - iOS 多任务处理 : Reductions performed by system upon entering background

ios - MPMoviePlayerController-Xcode找不到它和屏幕

ios - iOS 6 上被 EventKit 框架欺负

html - 仅在 iOS 上,粘性表格标题在滚动后松开

objective-c - 应用程序的音频无法通过扬声器播放

swift - 将文件从应用程序包复制并保存到桌面/其他位置

cocoa - 以编程方式从文件路径获取文件名和扩展名 cocoa ?

ios - 将行添加到最后一个单元格的底部

ios - 将约束迁移到另一个尺寸类 - Xcode

ios - 为什么我的应用程序包没有创建文件夹?