我正在浏览[String: Any]
字典,寻找nil
,因此我可以用NSNull
替换它们以进行JSON写入。我的预编译器警告告诉我,将Any
与nil
进行比较将始终为false,但我知道它至少包含两个从未找到的nils。有没有办法检查Any
是否为零?
答案 0 :(得分:10)
可选可以是nil
。其他任何事情都不可能是nil
。 Any
不是可选的。因此,将Any
与nil
进行比较是没有意义的。测试永远不会成功。
如果你知道这些东西可能是Optionals,你应该输入Any?
。这是一个可选项,可以与nil
进行比较。这是一个简单的例子:
let s : String? = nil
let any : Any? = s
if any == nil {
print("nil") // nil
}
如您所见,测试成功。
(尽管如此,如果可能的话,更准确地输入东西会更好。)
答案 1 :(得分:1)
我已经使用波纹管表达式解决了这个问题:
let filteredResult = dictionary.filter { !(($0.value as AnyObject) is NSNull) }
答案 2 :(得分:0)
if(object_getClass(yourVariable)?.description() == "NSNull")
可以是检查的方法之一。