Iphone 在AVAudioPlayer中动态加载mp3文件-按值传递参数
我正在尝试使用AVAudioPlayer动态播放一些mp3声音 下面的代码可以很好地工作,并且确实可以播放声音, 然而,我在分析时得到了这个错误 “消息表达式中的传递值参数未定义” 为什么会这样?应该如何解决Iphone 在AVAudioPlayer中动态加载mp3文件-按值传递参数,iphone,objective-c,avaudioplayer,Iphone,Objective C,Avaudioplayer,我正在尝试使用AVAudioPlayer动态播放一些mp3声音 下面的代码可以很好地工作,并且确实可以播放声音, 然而,我在分析时得到了这个错误 “消息表达式中的传递值参数未定义” 为什么会这样?应该如何解决 +(void)playSound:(int)soundName { NSString *theSound; switch (soundName) { case 1: theSound = @"beep1.mp3";
+(void)playSound:(int)soundName
{
NSString *theSound;
switch (soundName) {
case 1:
theSound = @"beep1.mp3";
break;
case 2:
theSound = @"beep2.mp3";
break;
case 3:
theSound = @"beep3.mp3";
break;
default:
break;
}
//
NSURL *s1 = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] resourcePath], theSound]];
NSError *error;
AVAudioPlayer *sound1;
sound1 = [[[AVAudioPlayer alloc] initWithContentsOfURL:s1 error:&error] autorelease];
sound1.numberOfLoops = 0;
//[sound1 prepareToPlay];
[sound1 play];
}
尝试
NSString*theSound=@代码>
设置默认值通常可以解决此问题
说明:
编译器不确定声音在使用时是否实际包含值。为某些对象指定默认值是一种很好的做法,尤其是在处理循环和选择语句时。如果soundName
不是1,2或3,是否确实要尝试播放没有路径的声音文件
对于默认子句,要么报告错误,要么静默返回。不要创建一个路径无效的播放器,并要求它播放它,它只会感到不安。嘿,埃文,它确实起作用了-谢谢你。如果您能用几句话解释一下原因,我将不胜感激。我宁愿理解我的错误,而不仅仅是修复错误。编译器不确定声音在使用时是否真的包含值。为某些对象指定默认值是一种很好的做法,尤其是在处理循环和选择语句时。谢谢你,皮特,我想这是问题/解决方案的另一面