【发布时间】:2016-09-13 21:23:37
【问题描述】:
我刚刚转换为 Swift 3,我需要帮助解决这个错误。我昨天转换为 swift 3 时遇到了这个错误,这个完整的代码运行良好。我试一下?在其中,但它根本没有修复错误,它保持不变。
import Foundation
import AVFoundation
class AudioHelper: NSObject, AVAudioPlayerDelegate {
var player : AVAudioPlayer?
class var defaultHelper : AudioHelper {
struct Static {
static let instance : AudioHelper = AudioHelper()
}
return Static.instance
}
override init() {
super.init()
}
func initializeAudio() {
let url = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("", ofType: "")!)
self.player = try! AVAudioPlayer(contentsOfURL: url, fileTypeHint: nil)
self.player?.numberOfLoops = -1
self.player?.play()
}
func stopAudio() {
self.player?.stop()
self.player?.prepareToPlay()
}
func startAudio() {
AVAudioSession.sharedInstance().setActive(true, error: nil)
self.player?.play()
}
func audioPlayerDidFinishPlaying(player: AVAudioPlayer, successfully flag: Bool) {
AVAudioSession.sharedInstance().setActive(false, error: nil)
}
}
【问题讨论】:
-
查看the documentation 方法
setActive(_:)- 它抛出而不是采用错误参数。因此,如果您不关心引发的错误,只需删除错误参数并在调用前加上try?。 -
这对我的回答没有帮助,它是不同的。
-
@Hamish 说将你的两个
AVAudioSessiom.sharedInstance().setActive(false, error: nil)实例更改为try? AVAudioSession.sharedInstance().setActive(false),因为签名在 Swift 3 中发生了变化
标签: ios swift sprite-kit swift3 avaudiosession