swift - Bool转换的可选选项导致错误

时间:2014-08-11 01:37:47

标签: swift

我无法检查swift中是否存在可选项。

var myString:String? = "Hello"

if myString {
    println(myString)
}

当我在游乐场中使用此代码时,我得到了

  

注意:可选类型'String?'不能用作布尔值;测试'!= nil'而不是   if myString {      ^      (!=无)

  

错误:输入'String?'不符合协议'BooleanType.Protocol'   if myString

错误表明我使用

myString != nil

但文档说这个当前代码应该没问题。我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

来自Xcdoe6-beta5 release notes

  

Optionals不再符合BooleanType(以前的LogicValue)   协议,因此它们可能不再用于代替布尔值   表达式(必须明确地将它们与v!= nil进行比较)。这个   解决了Bool周围的困惑?和相关类型,使代码更多   明确了预期的测试,并且更符合   其余的语言。

     

请注意,ImplicitlyUnwrappedOptional仍然存在   包括一些BooleanType功能。这个问题将得到解决   在未来的测试版中。 (17110911)

所以请按照建议使用myString != nil。并始终参考最新文档,因为Swift仍处于测试阶段。