由于某种原因在获取资源的 URL 时遇到问题:此代码在 viewDidLoad 中,并且在其他应用程序中有效,但由于某些原因不在此处:
NSString* audioString = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"wav"];
NSLog(@"AUDIO STRING: %@" , audioString);
NSURL* audioURL = [NSURL URLWithString:audioString];
NSLog(@"AUDIO URL: %d" , audioURL);
NSError* playererror;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&playererror];
[audioPlayer prepareToPlay];
NSLog(@"Error %@", playererror);
日志输出:
音频串:/var/mobile/Applications/D9FA0569-45FF-4287-8448-7EA21E92EADC/SoundApp.app/sound.wav
音频网址:0
错误错误 Domain=NSOSStatusErrorDomain Code=-50“操作无法完成。(OSStatus 错误-50.)”
4 回答
你的字符串没有协议,所以它是无效的网址。试试这个...
只需将一行更改为:
你在
NSLog
方法中传递audioURL
为%d
因此为什么你得到 0.如果你把它作为一个对象%@
传递你将获得NULL
。尝试像这样传入 audioplayer 并跳过字符串。
您没有仔细阅读响应 - 当您应该使用 fileURLWithPath 时,您正在使用 URLWithString。您不能将 file://路径传递给 URLWithString。我认为你还需要在字符串的前面加上 file://,因为你只有一个路径(指出它没有协议)。