如何在Swift中初始化AVAudioPlayer
我有这个文件,想在另一个类中使用这个文件,但这不起作用。我假设这是因为我没有初始化这个文件中的如何在Swift中初始化AVAudioPlayer,swift,initialization,avaudioplayer,Swift,Initialization,Avaudioplayer,我有这个文件,想在另一个类中使用这个文件,但这不起作用。我假设这是因为我没有初始化这个文件中的AVAudioPlayer,所以我解决了这个问题,但是出现了一条消息,说“调用可以抛出,但它没有标记为'try',错误没有被处理”我的实现没有成功。我不知道怎么处理这件事。你能指出初始化的错误并给我提供一些有效的代码吗。提前谢谢 class SoundManager: AVAudioPlayer { var _Sound: AVAudioPlayer! override init() { le
AVAudioPlayer
,所以我解决了这个问题,但是出现了一条消息,说“调用可以抛出,但它没有标记为'try',错误没有被处理”
我的实现没有成功。我不知道怎么处理这件事。你能指出初始化的错误并给我提供一些有效的代码吗。提前谢谢
class SoundManager: AVAudioPlayer {
var _Sound: AVAudioPlayer!
override init() {
let url = NSBundle.mainBundle().URLForResource("rain", withExtension: "wav")
super.init(contentsOfURL: url!)
}
func playSound() {
if (url == nil) {
print("Could not find the file \(_Sound)")
}
do {
_Sound = try AVAudioPlayer(contentsOfURL: url!, fileTypeHint: nil)
}
catch let error as NSError { print(error.debugDescription)
}
if _Sound == nil {
print("Could not create audio player")
}
_Sound.prepareToPlay()
_Sound.numberOfLoops = -1
_Sound.play()
}
}
我建议在管理器中使用这种方式,它不必是AVAudioPlayer的子类 class SoundManager { var _Sound: AVAudioPlayer! var url: NSURL? /** init with file name - parameter fileName: fileName - returns: SoundManager */ init(fileName: String) { url = NSBundle.mainBundle().URLForResource(fileName, withExtension: "wav") } func playSound() { if (url == nil) { print("Could not find the file \(_Sound)") } do { _Sound = try AVAudioPlayer(contentsOfURL: url!, fileTypeHint: nil) } catch let error as NSError { print(error.debugDescription) } if _Sound == nil { print("Could not create audio player") } _Sound.prepareToPlay() _Sound.numberOfLoops = -1 _Sound.play() } } 班级音响管理员{ var_Sound:AVAudioPlayer! var-url:NSURL? /** 具有文件名的init -参数文件名:fileName -返回:SoundManager */ init(文件名:String){ url=NSBundle.mainBundle().URLForResource(文件名,扩展名:“wav”) } func playSound(){ 如果(url==nil){ 打印(“找不到文件\(\u声音)”) } 做{ _Sound=尝试AVAudioPlayer(contentsOfURL:url!,fileTypeHint:nil) } 将let错误捕获为NSError{print(error.debugDescription) } 如果_Sound==nil{ 打印(“无法创建音频播放器”) } _准备播放 _Sound.numberOfLoops=-1 _播放 } } 使用
let manager=SoundManager(文件名:“hello”)
经理:playSound()
我建议在管理器中使用这种方式,它不必是AVAudioPlayer的子类
class SoundManager {
var _Sound: AVAudioPlayer!
var url: NSURL?
/**
init with file name
- parameter fileName: fileName
- returns: SoundManager
*/
init(fileName: String) {
url = NSBundle.mainBundle().URLForResource(fileName, withExtension: "wav")
}
func playSound() {
if (url == nil) {
print("Could not find the file \(_Sound)")
}
do {
_Sound = try AVAudioPlayer(contentsOfURL: url!, fileTypeHint: nil)
}
catch let error as NSError { print(error.debugDescription)
}
if _Sound == nil {
print("Could not create audio player")
}
_Sound.prepareToPlay()
_Sound.numberOfLoops = -1
_Sound.play()
}
}
班级音响管理员{
var_Sound:AVAudioPlayer!
var-url:NSURL?
/**
具有文件名的init
-参数文件名:fileName
-返回:SoundManager
*/
init(文件名:String){
url=NSBundle.mainBundle().URLForResource(文件名,扩展名:“wav”)
}
func playSound(){
如果(url==nil){
打印(“找不到文件\(\u声音)”)
}
做{
_Sound=尝试AVAudioPlayer(contentsOfURL:url!,fileTypeHint:nil)
}
将let错误捕获为NSError{print(error.debugDescription)
}
如果_Sound==nil{
打印(“无法创建音频播放器”)
}
_准备播放
_Sound.numberOfLoops=-1
_播放
}
}
使用
let manager=SoundManager(文件名:“hello”)
经理:playSound()
工作正常!!我认为将AVAuiodPlayer实现为一个子类是必要的。我很好奇在什么情况下,我应该使用它吗?@ryohei当你想将这个管理器用作
AVAudioPlayer时,就使用subclass。它将简化超类的性质和功能。说到管理器类,我更喜欢创建没有子类的类,并给它一个AVAudioPlayer实例,就像您在第var\u行中所做的那样:AVAudioPlayer代码>。别忘了把我的答案标记为有用~~哦,我明白了。我很高兴能解决这个问题!谢谢你的回答:)成功了!!我认为将AVAuiodPlayer实现为一个子类是必要的。我很好奇在什么情况下,我应该使用它吗?@ryohei当你想将这个管理器用作
AVAudioPlayer时,就使用subclass。它将简化超类的性质和功能。说到管理器类,我更喜欢创建没有子类的类,并给它一个AVAudioPlayer实例,就像您在第var\u行中所做的那样:AVAudioPlayer代码>。别忘了把我的答案标记为有用~~哦,我明白了。我很高兴能解决这个问题!谢谢你的回答:)