可选类型'$ T11'不能用作布尔值; 自从安装XCode 6 beta 7以来,测试'!= nil'

Lon*_*Guy 6 ios swift xcode6 xcode6-beta7

这是我收到错误的代码:

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

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

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

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

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

感谢帮助.

谢谢你的时间

Ant*_*nio 11

Optionals不再被视为布尔表达式(如Swift参考 - 修订历史中所述):

Optionals在有值时不再隐式评估为true,而在没有值时则不再为false,以避免在使用可选的Bool值时出现混淆.相反,使用==或!=运算符对nil进行显式检查,以确定可选项是否包含值.

所以你必须明确如下:

if (fieldValue == nil || ...
Run Code Online (Sandbox Code Playgroud)

我记得在测试版6中有所改变 - 你使用的是beta 5吗?