0

这是我的代码并且正在播放声音,但是在我更新到 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 以停止显示它

4

2 回答 2

0

在这一行:

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

问题是alertSound现在是一个 Optional,因为NSURL(fileURLWithPath:)可以返回 nil。你需要打开它:

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

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

于 2014-11-07T19:02:25.153 回答
-1

您需要更改 URLForResource 的 pathForResource

像这样 :

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

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

于 2014-11-07T17:55:35.033 回答