我正在尝试使用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'来明确转换吗?
答案 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
}