NSBundle pathForResource为零

时间:2014-04-20 21:07:44

标签: ios iphone objective-c nsbundle

我正在尝试加载M4A文件,但我无法使用NSBundle获取该文件的路径。

NSString *fileURLString = [[NSBundle mainBundle] pathForResource:fileName ofType:fileExtension];
NSURL *fileToBePlayed = [[NSURL alloc] initWithString:fileURLString];

tourAudioPlayer = [tourAudioPlayer initWithContentsOfURL:fileToBePlayed error:nil];

当我运行代码时,调试器显示fileURLString为nil,因此后续的两个对象也是如此。

我已将该文件添加到支持文件目录,并确认该文件包含在Target>下的Copy Bundle Resources下。建立阶段。

不幸的是,在这种情况下,Clean和Build的魔力让我失望了。是否有一些加载文件的阶段我错过了?

2 个答案:

答案 0 :(得分:0)

试试吧......

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSURL *vedioURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:FileName ofType:FileType]];
    MPMoviePlayerViewController *videoPlayerView = [[MPMoviePlayerViewController alloc] initWithContentURL:vedioURL];
    [self presentMoviePlayerViewControllerAnimated:videoPlayerView];
    [videoPlayerView.moviePlayer play];
}

答案 1 :(得分:0)

我已经解决了这个问题,结果证明是两个愚蠢的问题。

第一个问题是我使用的是initWithString:而不是fileURLWithPath:。我懒得阅读文档。

第二个问题仅仅是令人尴尬的疏忽。提供的代码片段代表AVAudioPlayer的初始创建,因此我跟随在堆上为它分配空间。

进行上述更改可以解决问题。感谢所有提供建议和支持的人。