如何使用swift修复AVAudioPlayer init中的错误

时间:2014-10-25 20:32:15

标签: swift xcode6.1

这是我的代码,声音正在播放,但在我更新到xcode 6.1后,我收到此错误

通话中的额外参数'contentsOfURL'

var alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sound", ofType: "aiff")!)
//println(alertSound);

// Removed deprecated use of AVAudioSessionDelegate protocol
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
AVAudioSession.sharedInstance().setActive(true, error: nil)

var error:NSError?;
audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error); // the error
audioPlayer.prepareToPlay();

如何修复错误和xcode以停止显示

2 个答案:

答案 0 :(得分:0)

在这一行:

audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error)

问题是alertSound现在是可选的,因为NSURL(fileURLWithPath:)可以返回nil。你需要解开它:

audioPlayer = AVAudioPlayer(contentsOfURL: alertSound!, error: &error)

这将允许您的代码编译。但是,在你这样做之前,明确检查alertSound是否为零可能更好!如果 为零,则直接展开会导致崩溃。

答案 1 :(得分:-1)

您需要更改URLForResource的pathForResource

像这样:

var alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().URLForResource("sound", ofType: "aiff")!)

contentsOfURL需要一个NSURL而不是一个字符串。