swift - 西蒙游戏,player.delegate 错误:意外发现 nil
问题描述
我正在尝试制作这个西蒙游戏应用程序来练习。如附图中的右侧代码所示,作者对每种颜色分别有 4 名玩家,因此有 4 名代表。
我试图通过只使用一个播放器来简化它,如左侧代码所示。但是,我收到错误消息“在展开可选值时意外发现 nil”。我不明白为什么它是可选的,因为我使用 ! 解开播放器。
错误的原因是什么?
谢谢。
解决方案
您正在尝试为对象的属性赋值,而该对象为 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()
}
推荐阅读
- java - 如何创建受可迭代类型约束的泛型方法?
- python - 修改 df 后更新 df 变量列表
- javascript - Javascript maptiler 无法工作,但会显示纬度和经度
- python-3.x - 如何从 ipywidgets 输出返回熊猫数据框
- python - 让 Bot Discord Py 做出反应
- javascript - 如何在 Web 浏览器的“DOM 检查器”中获取 HTML 代码?
- javascript - 在 chrome 片段中使用 && 运算符时显示错误
- neo4j - 具有公共关系属性的neo4j最短路径
- docker - 由于权限被拒绝错误,无法从 Docker 映像创建 Dockerfile
- image - 将base64转换为图像并保存在本地的最佳方法是什么?