我无法检查swift中是否存在可选项。
var myString:String? = "Hello"
if myString {
println(myString)
}
当我在游乐场中使用此代码时,我得到了
注意:可选类型'String?'不能用作布尔值;测试'!= nil'而不是 if myString { ^ (!=无)
和
错误:输入'String?'不符合协议'BooleanType.Protocol' if myString
错误表明我使用
myString != nil
但文档说这个当前代码应该没问题。我在这里做错了吗?
答案 0 :(得分:1)
Optionals不再符合BooleanType(以前的LogicValue) 协议,因此它们可能不再用于代替布尔值 表达式(必须明确地将它们与v!= nil进行比较)。这个 解决了Bool周围的困惑?和相关类型,使代码更多 明确了预期的测试,并且更符合 其余的语言。
请注意,ImplicitlyUnwrappedOptional仍然存在 包括一些BooleanType功能。这个问题将得到解决 在未来的测试版中。 (17110911)
所以请按照建议使用myString != nil
。并始终参考最新文档,因为Swift仍处于测试阶段。