使用Swift 2的AVFoundation播放声音

时间:2015-09-28 05:58:05

标签: swift avfoundation swift2

我正在尝试使用AVFoundation在我的iOS应用程序(用Swift 2编写)中播放声音。我让它与之前版本的Swift没有任何问题。我正在使用Xcode 7.0。我不确定是什么问题,并且无法找到有关播放声音的Swift 2的任何其他信息。这是声音部分的代码:

import AVFoundation

class ViewController: UIViewController {
    var mySound = AVAudioPlayer()

    override func viewDidLoad() {
            super.viewDidLoad()
        mySound = self.setupAudioPlayerWithFile("mySound", type:"wav")

        mySound.play()
    }

    func setupAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer  {
            var path = NSBundle.mainBundle().pathForResource(file, ofType:type)
            var url = NSURL.fileURLWithPath(path!)

            var error: NSError?

            var audioPlayer:AVAudioPlayer?
            audioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error)

            return audioPlayer!
    }
}

我收到此错误但感觉可能还有其他一些问题:

  

'NSString'不能隐式转换为'String';你的意思是使用'as'来明确转换吗?

2 个答案:

答案 0 :(得分:3)

像Leo说的那样

  

您需要实现do try catch错误处理。

这是另一个按下按钮时会运行声音的代码示例。

class vClass {
    // ...
    int ID; // Or index, but I think ID sounds better
    // ...
};

我希望这有帮助!

答案 1 :(得分:2)

您需要实现do try catch错误处理。试试这样:

func setupAudioPlayerWithFile(file: String, type: String) -> AVAudioPlayer? {

    if let url = NSBundle.mainBundle().URLForResource(file, withExtension: type) {
        do {
            return try AVAudioPlayer(contentsOfURL: url)
        } catch let error as NSError {
            print(error.localizedDescription)
        }
    }
    return nil
}