Swift3 Swift 3尝试使用字符串执行条件

Swift3 Swift 3尝试使用字符串执行条件,swift3,Swift3,我有下面的代码,它在swift 2.3中运行得非常好 "code": self.searchByCode == true ? description : NSNull(), 在Swift 3中,我得到了这个错误 有什么线索吗?您的问题是这个表达式self.searchByCode==true?描述:NSNull可能导致字符串或NSNull,因此编译器无法推断其类型 在将其添加到dict之前,您可以将其存储在任意变量中,或者您可以尝试此方法。我认为此方法可行,但我没有尝试过: self.sear

我有下面的代码,它在swift 2.3中运行得非常好

"code": self.searchByCode == true ? description : NSNull(),
在Swift 3中,我得到了这个错误


有什么线索吗?

您的问题是这个表达式self.searchByCode==true?描述:NSNull可能导致字符串或NSNull,因此编译器无法推断其类型

在将其添加到dict之前,您可以将其存储在任意变量中,或者您可以尝试此方法。我认为此方法可行,但我没有尝试过:

self.searchByCode==真?描述:NSNull作为任何

我建议使用nil而不是NSNull,尤其是在使用Swift 3时,如下所示:

self.searchByCode == true ? description : nil

它应该会消除错误。

第一部分是正确的,但使用Any绝对不是正确的方法。@Alexander虽然我同意使用Any并不理想,但它有合法的用途。例如,如果要将字典序列化为JSON,并且您想要一个具有空值的键,那么请使用可选的。没有理由在Swift中使用NSNull。您不应该在Swift中使用NSNull。