gpt4 book ai didi

ios - Swift:应用程序因 fatal error 而崩溃:在展开可选值时意外发现 nil?

转载 作者:行者123 更新时间:2023-11-28 11:23:01 25 4
gpt4 key购买 nike

我在 Stack 上看过很多其他人有同样的错误( fatal error :在展开可选值时意外发现 nil?),但我不明白在我的场景中什么可能等于 nil,因为有太多继续在崩溃的线上。

实际的异常是“Thread 1: EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, sub code= 0x0”,它在下面指示的行上崩溃。我不确定 Bool,plays 还是 spot 等于 nil。当我单击线程 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
}
}

最佳答案

Dictionary 的下标函数将返回一个Optional(在本例中为Int?),无论键类型如何。这是因为您可能正在请求不存在的 key 。来自docs :

Because it is possible to request a key for which no value exists, a dictionary’s subscript returns an optional value of the dictionary’s value type.

你会想做这样的事情:

func isOccupied(spot: Int) -> Bool {
if let doesPlay = plays[spot] {
return Bool(doesPlay)
} else {
return false // assuming that's a sane default
}
}

关于ios - Swift:应用程序因 fatal error 而崩溃:在展开可选值时意外发现 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25192239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com