【发布时间】:2014-08-08 10:38:41
【问题描述】:
我在 Stack 上查看了许多其他具有相同错误的其他错误(致命错误:在展开可选值时意外发现 nil?),但我不明白在我的场景中什么可能等于 nil,因为有这么多正在崩溃的线上进行。
实际的异常是“线程 1:EXC_BAD_INSTRUCTION(代码=EXC_1386_INVOP,子代码=0x0”,它在下面指示的行上崩溃。我不确定 Bool、plays 或 spot 是否等于无。当我单击线程 1 下的栏时,其他 3 行也会出现同样的错误。
这些后续行都涉及isOccupied 函数,而后者又涉及这一行。我在想我解决了第一个错误,其他错误将得到解决。
介绍plays的代码块:
var plays = Dictionary<Int,Int>()
var done = false
var aiDeciding = false
错误在哪里:
func isOccupied(spot:Int)->(Bool) {
return Bool(plays[spot]!) //ERROR LINE
}
改成这样:
func isOccupied(spot:Int)->(Bool) {
if plays != nil {
return Bool(plays[spot]!)
}
else {
return false
}
}
【问题讨论】:
-
设置断点并检查调试器中的变量?将一行分成几行?