【问题标题】:swift - Optional to Bool Conversion Causes Errorswift - 可选的布尔转换导致错误
【发布时间】:2014-08-11 10:03:57
【问题描述】:

我无法快速检查可选选项是否存在。

var myString:String? = "Hello"

if myString {
    println(myString)
}

当我在操场上使用此代码时,我得到了

注意:可选类型“字符串?”不能用作布尔值;改为测试 '!= nil' 如果我的字符串 { ^ ( != nil)

和

错误:键入“字符串?”不符合协议'BooleanType.Protocol' 如果我的字符串

错误提示我使用

myString != nil

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

【问题讨论】:

  • 我知道如果您将代码更改为 myString != nil 它将起作用...文档可能已过期?
  • @nielsbot 谢谢!我更新了文档 iBook,现在似乎要求您使用 if(myString !=nil) 而不是 if(myString)。

标签: swift


【解决方案1】:

来自Xcdoe6-beta5 release notes

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多