尝试使用以下代码添加多个玩家:
class AVAudioPlayerPool: NSObject {
class func playerWithURL(url : NSURL) -> AVAudioPlayer? {
let availablePlayers = players.filter { (player) -> Bool in return player.playing == false && player.url == url
}
if let playerToUse = availablePlayers.first {
print("Reusing player for \(url.lastPathComponent)")
return playerToUse
}
var error : NSError?
if let newPlayer = AVAudioPlayer(contentsOfURL:url, error: &error){
print("Creating new player for url \(url.lastPathComponent)")
players.append(newPlayer)
return newPlayer
}
else{
print("Couldn't load \(url.lastPathComponent):\(error)")
return nil
}
}
}
但我不断收到来自此行代码“if let newPlayer = AVAudioPlayer(contentsOfURL:url, error: &error)”的错误“参数标签 '(contentsOfURL:, error:)' 与任何可用的重载不匹配”已经尝试使用尝试!但我无法消除该错误,只是在插入“尝试!”时收到不同的错误任何帮助将不胜感激。
最佳答案
AVAudioPlayer(contentsOfURL:url, error: &error)
不是 Swift 中 AVAudioPlayer 的有效构造函数。相反,您必须使用 AVAudioPlayer(contentsOfURL:url)
,这可能会引发错误。有多种方法可以处理该错误(请参阅 Swift Error Handling ),但您可能想要尝试?
。
if let newPlayer = try? AVAudioPlayer(contentsOfURL: url) {
print("Creating new player for url \(url.lastPathComponent)")
players.append(newPlayer)
return newPlayer
} else {
print("Couldn't load \(url.lastPathComponent):\(error)")
return nil
}
关于ios - 创建 Swift AVAudioPlayer 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37335863/