如果语句在Swift中有多个条件

Nic*_*ico 4 swift

我有一个if语句,我希望有两个条件,如下所示:

if let name = json["resource"]["fields"]["name"].stringValue && name.hasPrefix("/")
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到错误"使用未解析的标识符名称".那么解决方案是什么?

if let name = json["resource"]["fields"]["name"].stringValue && "test".hasPrefix("/"){
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我得到一个错误"可选类型'$ T16'不能用作布尔值;测试'!= nil'而不是"

这可能是一个愚蠢的问题,但我必须承认我迷失了......

谢谢你的帮助

Mic*_*lum 6

您没有使用常规if语句,您正在使用可选绑定,并且您无法将绑定与对绑定值的检查结合起来.你可以把它分解成这样的东西.

if let name = json["resource"]["fields"]["name"].stringValue {
    if name.hasPrefix("/") {
        // stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:在Swift 1.2中看起来已经发生了变化.根据发行说明,现在可以为if let添加额外的条件,而let语句:

"if let"构造已经扩展为允许使用类似于泛型约束的语法在单个if(或while)语句中测试多个选项和保护条件:

if let name = json["resource"]["fields"]["name"].stringValue where name.hasPrefix("/") {
    // stuff
}
Run Code Online (Sandbox Code Playgroud)

上面的代码应该达到你想要的.(未测试)