【问题标题】:Optional type '$T11' cannot be used as a boolean; test for '!= nil' instead since installing XCode 6 beta 7可选类型 '$T11' 不能用作布尔值;自安装 XCode 6 beta 7 以来测试 '!= nil'
【发布时间】:2014-09-03 15:18:03
【问题描述】:

这是我收到错误的代码:

for (key, value) in info {
    let fieldValue: AnyObject? = value

    if (!fieldValue || fieldValue?.length == 0) { // this line gives the error
        informationComplete = false;
    } 
}

这是 XCode 建议我使用的,它会导致另一个错误:

for (key, value) in info {
    let fieldValue: AnyObject? = value

    if ((!fieldValue || fieldValue?.length == 0) != nil) { //bool not convertible to string
        informationComplete = false;
    }
 }

感谢您的帮助。

感谢您的宝贵时间

【问题讨论】:

    标签: ios swift xcode6 xcode6-beta7


    【解决方案1】:

    Optionals 不再被视为布尔表达式(如 Swift 参考中所述 - Revision History):

    当它们有值时,Optionals 不再隐式地计算为 true,而当它们没有值时,它们不再隐式地计算为 false,以避免在使用可选的 Bool 值时产生混淆。相反,请使用 == 或 != 运算符对 nil 进行显式检查,以确定可选项是否包含值。

    所以你必须明确如下:

    if (fieldValue == nil || ...
    

    我记得在 beta 6 中发生了变化 - 你使用的是 beta 5 吗?

    【讨论】:

    • 谢谢。我为那个修订列表添加了书签。我之前认为我使用的是 XCode beta 3 或 4。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 2014-11-07
    • 2015-10-04
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多