首页 > 解决方案 > 西蒙游戏,player.delegate 错误:意外发现 nil

问题描述

我正在尝试制作这个西蒙游戏应用程序来练习。如附图中的右侧代码所示,作者对每种颜色分别有 4 名玩家,因此有 4 名代表。

我试图通过只使用一个播放器来简化它,如左侧代码所示。但是,我收到错误消息“在展开可选值时意外发现 nil”。我不明白为什么它是可选的,因为我使用 ! 解开播放器。

错误的原因是什么?

谢谢。

代码比较

标签: swift

解决方案


您正在尝试为对象的属性赋值,而该对象为 nil 且尚未初始化。

移动这些代码行

player.delegate = self
player.numberOfLoops = 0 

到 playSound 功能

func playSound(soundName: String) {
   let url = Bundle.main.url(forResource: soundName, withExtension: "wav")
   player = try! AVAudioPlayer(contentsOf: url!)
   player.delegate = self
   player.numberOfLoops = 0
   player.play()
}

推荐阅读