Apple的Swift文档中有关if语句强制解包的错误?

oro*_*ome 3 swift

我的关于"Swift编程语言"的iBook包含以下描述强制解包if语句的功能示例:

let possibleNumber = "123"
let convertedNumber = possibleNumber.toInt()

if convertedNumber {
    println("\(possibleNumber) has an integer value of \(convertedNumber!)")
} else {
    println("\(possibleNumber) could not be converted to an integer")
}
// prints "123 has an integer value of 123”
Run Code Online (Sandbox Code Playgroud)

但这不适合我.Xcode的(6.0.1)要求我明确地比较nil ,如

if (convertedNumber != nil) {
    println("\(possibleNumber) has an integer value of \(convertedNumber!)")
} else {
    println("\(possibleNumber) could not be converted to an integer")
}
Run Code Online (Sandbox Code Playgroud)

我的iBook错了吗?

Gab*_*lla 6

是的,这是错的,或者更好,它已经过时了.行为在2014年4月8日发布时已更改,您可以在此处查看更改日志.相关部分:

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


话虽这么说,你可以删除括号

if convertedNumber != nil {
    ...
}
Run Code Online (Sandbox Code Playgroud)