0

我是新手,所以为了让事情变得简单,我试图在我的 main.m 中添加声音

据我所知,以下代码应该可以工作,但是当我运行它时,我得到一个“错误域=NSOSStatusErrorDomain Code=-43”操作无法完成。(OSStatus 错误 -43。)“(找不到文件)”

我已经尝试过使用各种音频文件和格式 - 在 Xcode 中添加到项目中,但无法弄清楚为什么它找不到我的 G1.wav

AVAudioPlayer *audioPlayer;

        NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"/G1.wav"]];

        NSError *error;
        audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
        audioPlayer.numberOfLoops = -1;

        if (audioPlayer == nil)
            NSLog([error description]);
        else
            [audioPlayer play];  

编辑删除了 NSBundle 和 mainBundle 引用 - 我的误解

4

1 回答 1

2

你可能会更好:

NSString *path = [[NSBundle mainBundle] pathForResource:@"G1" ofType:@"wav"];
NSURL *url = [NSURL fileURLWithPath:path];
...

使用pathForResource:ofType:您不必担心文件在捆绑包的层次结构中的位置。API 调用解决了这个问题。在您的代码中,resourcePath返回的任何内容显然都不是正确的路径。

您也可以NSLog()在这里和那里添加一些调用以查看实际发生的情况。

于 2012-04-27T17:18:23.560 回答