【发布时间】:2020-09-29 18:15:20
【问题描述】:
当变量窗口(和打印语句)显示test 是 nil 时,我不明白为什么执行落入 debugPrint 语句中:
let test = cxticsByUuid[cxtic.uuid]
if test != nil
{
debugPrint("Duplicate cxtic retrieved. Bailing out of peripheral's didDiscoverCharacteristicsFor...")
return
}
更新:虽然变量窗口显示有问题的变量为零,但它实际上是一个 double 可选的。所以它必须拆开两次,如相关帖子中所示。
【问题讨论】:
-
简而言之:使用
if let test = cxticsByUuid[cxtic.uuid] ?? nil { ... } -
@pawello2222 我认为您已经解决了问题,但这不是重复的 IMO(许多读者不清楚为什么这是原因)。如果您愿意写一个解释这里发生的事情的答案,那可能会非常有帮助。 (特别解释为什么
nil != .some(nil)。) -
@RobNapier 我已经阅读了 vacawama 对重复问题的回答,它看起来非常清晰和详细。我认为它没有遗漏任何东西。
-
如果 Oscar 理解(而且他们似乎理解),那么这表明它肯定足够接近。谢谢。
-
是的,直到发布这个之后我才注意到双重可选,但我离开了它,因为这种行为可能令人困惑;一切都表明有问题的变量为零。