当从另一个类调用方法时,Song不会播放

时间:2013-12-24 10:13:41

标签: ios objective-c avplayer

我正在尝试在我的应用程序中播放一首歌。当播放歌曲的代码立即放入控制器时,它运行良好。
但是当我把代码放在一个类中时,调用该类然后调用该方法播放该歌曲,没有任何反应?如果有人有线索,请随时提供帮助。

这是播放歌曲的代码

-(void)randomSound{
    NSLog(@"sound");
    NSString * path;

    NSError * err;
    NSString *name;
    NSArray *names = [[NSArray alloc] initWithObjects:@"1up.wav", @"mario02.dsp.wav", @"mario04.dsp.wav", @"mario06.dsp.wav", @"mrf.dsp.wav",  nil];
    name = [names randomObject];
    path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:name];
    if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
        NSURL * url = [NSURL fileURLWithPath:path];
        self.snd = [[AVAudioPlayer alloc] initWithContentsOfURL:url
                                                          error:&err] ;
        if (! self.snd) {
            NSLog(@"data named '%@' had error %@", name, [err localizedDescription]);
        } else {
            NSLog(@"playing");
            [self.snd prepareToPlay];
            [self.snd play];
        }
    } else {
        NSLog(@"data file '%@' doesn't exist at '%@'", name, path);
    }
}

我称之为方法的方式

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"YAHOO"])
{
    YahooViewController *YH = [[YahooViewController alloc] init];
    [YH randomSound];
}

随机方法,以防有人想知道其中的内容

-(id)randomObject {
    NSUInteger myCount = [self count];
    if (myCount)
        return [self objectAtIndex:arc4random_uniform(myCount)];
    else
        return nil;
}

1 个答案:

答案 0 :(得分:1)

在评论中讨论后,发现问题是URL编码。

查看此问题/答案,它将向您展示如何对字符串进行URLEncode:

How do I URL encode a string