答案 0 :(得分:2)
po taker["user_id"]
为您提供正确的答案:Some: <null>
表示可空值中的内容为null。即使没有Foundation互操作,您也可以使用可选值的字典(例如[Int: Int?]
)获得类似的内容,在这种情况下,下标的结果类型将为Int??
)。
但是,在您的情况下,“只是”可选项中的对象是NSNull()
的实例。 NSNull
是一种特殊类型,您可以在nil
不可接受的地方使用。例如,Objective-C NSDictionaries不支持nil
值(因为它们返回nil
表示字典中不存在的键)。如果您想发出NSDictionary
密钥存在但没有价值的信号,最常见的做法是将其与NSNull
值相关联。
我怀疑taker
是一个源自JSON的字典。除了存在的密钥之外,您应该检查该值是否具有您期望的类型。这将清除NSNull
以及可能的其他错误输入。例如:
if let value = taker["user_id"] as? Int {
// things here
}
答案 1 :(得分:1)
可能是这种情况
您的词典包含NSNull()作为值
let dictionary: [String: AnyObject] = ["id": NSNull()]
if dictionary["id"] == nil {
print("is Nil")
}else {
print("Not Nil") // prints: Not Nil as this is true
}
print(dictionary["id"]) // Optional(<null>)