Iphone 在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";

我正在尝试使用AVAudioPlayer动态播放一些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,是否确实要尝试播放没有路径的声音文件


对于默认子句,要么报告错误,要么静默返回。不要创建一个路径无效的播放器,并要求它播放它,它只会感到不安。

嘿,埃文,它确实起作用了-谢谢你。如果您能用几句话解释一下原因,我将不胜感激。我宁愿理解我的错误,而不仅仅是修复错误。编译器不确定声音在使用时是否真的包含值。为某些对象指定默认值是一种很好的做法,尤其是在处理循环和选择语句时。谢谢你,皮特,我想这是问题/解决方案的另一面