iOS AVAudioPlayer OSStatus错误-43

时间:2013-01-25 00:03:24

标签: iphone ios ipad avaudioplayer

在我的应用中,可以录制和保存歌曲。更新我的应用程序后,我尝试初始化AVAudioPlayer时出错。歌曲保存在文档目录中,我只是用该歌曲创建文档目录的URL并得到上面的错误。在阅读类似问题的其他答案时,它说-43是一个找不到文件的错误,所以我在文档目录中输出了所有内容,我可以清楚地看到我正在尝试访问的文件位于文档目录中。它只能使用

在文档目录的路径中出错
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

获取文件目录。

我如何初始化audioplayer,我正在尝试访问的错误和URL:

[[AVAudioPlayer alloc]initWithContentsOfURL:urlOfSong error:&error]; 
if (error)
        {
            NSLog(@"Error in audioPlayer: %@", 
                  [error localizedDescription]);
            NSLog(@"error with this: %@",urlOfSong);
        }


2013-01-24 18:51:40.223 app[14104:907] Error in audioPlayer: The operation couldn’t be completed. (OSStatus error -43.)
2013-01-24 18:51:40.224 app[14104:907] error with this: file://localhost/var/mobile/Applications/C8F1FB54-CF7E-46EC-9B87-8BE3CE9B0A3D/Documents/k%20-%20Spongebob.m4a

可以看出我正在尝试播放的文件名为k - Spongebob.m4a

以下是我的文档目录的输出:

2013-01-24 18:51:40.228 app[14104:907] (
    "Recording 11413, 10:28 PM - All I Need.m4a",
    "k - Spongebob.m4a" 
)

请记住,我提到这只是在我更新我的应用之后。在发送更新之前进行测试时,一切都运行良好。如果我录制一首新歌并将其保存,然后尝试使用完全相同的方法播放它,它就可以正常工作。当我正在尝试播放我在更新之前录制的歌曲时,就会发生这种情况。

任何帮助人员???

1 个答案:

答案 0 :(得分:2)

我明白了。显然,当您更新应用程序时,路径中文档前面的字母和数字(即0B6DDD37-792B-4C1A-98A3-1A96B64B4DB0)会发生变化。我用旧的字母和数字保存旧路径并尝试使用该路径初始化,这就是错误发生的原因。我只需要使用文档目录的当前路径进行初始化。这解释了为什么在我发送更新之前测试时没有发生此错误。