最佳答案
po taker["user_id"]
给你正确答案:Some: <null>
意味着可空值内部的内容为空。即使没有 Foundation 互操作,您也可以通过可选值字典获得类似的东西(比如 [Int: Int?]
,在这种情况下,下标的结果类型将为 Int??
)。
不过,在您的情况下,可选对象中的对象“只是”是 NSNull()
的一个实例。 . NSNull
是您在 nil
的地方使用的特殊类型是 Not Acceptable 。例如,Objective-C NSDictionaries 不支持 nil
值(因为它们为字典中不存在的键返回 nil
)。如果你想发出 NSDictionary
的信号key 存在但没有值,最常见的做法是将其关联到 NSNull
值(value)。
我怀疑taker
是从 JSON 派生的字典。您应该检查,除了存在的键之外,该值是否具有您期望的类型。这将淘汰NSNull
s 和其他可能的不正确输入。例如:
if let value = taker["user_id"] as? Int {
// things here
}
关于Swift 可选的 nil 检查返回与实际情况不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38495508/