调用中的参数标签不正确?

时间:2016-02-20 19:05:26

标签: swift error-handling swift2

请帮帮我!我最近才开始在Swift编程。这是我的第一个项目。我收到错误消息:"调用"中的参数标签不正确。这是我的代码:

import UIKit
import AVFoundation

class PlaySoundsViewController: UIViewController {

var audioPlayer:AVAudioPlayer!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    if var filePath = NSBundle.mainBundle().pathForResource("psl",ofType: "mp3"){
        var filePathUrl = NSURL.fileURLWithPath(filePath)
        audioPlayer = AVAudioPlayer(contentsOfURL: filePathUrl, error: nil)

    }else {
        print("the filepath is empty")
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
@IBAction func playSoundSlow(sender: UIButton) {
    audioPlayer.play()

我不确定此处出现的问题是我的代码的另一张图片,因此您还可以看到错误消息。My Code

我试图让它播放名为psl.mp3的mp3。 请帮我!!!我刚刚开始并且不知道该怎么做。

P.S。不是英语母语,对于错误感到抱歉。

2 个答案:

答案 0 :(得分:2)

Swift 2添加了新的错误处理,这意味着您甚至不必传入错误参数:

audioPlayer = try! AVAudioPlayer(contentsOfURL: filePathUrl)

此初始化程序throws,表示如果出现错误,您可以在do-catch语句中捕获它。但是,由于您为{error}参数传递了nil,我假设您确定玩家在那里。这就是为什么我在try!中使用do-catch而不使用try代替do-catch

了解新的错误处理here

答案 1 :(得分:1)

试试这个

    do {
        audioPlayer = try AVAudioPlayer(contentsOfURL: NSURL.fileURLWithPath(path))
        audioPlayer.delegate = self
        audioPlayer.prepareToPlay()
        audioPlayer.play()            

    } catch {
        print("Catch error in playUsingAudioPlayer")
   }