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

时间:2015-02-08 12:04:38

标签: swift

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

if let name = json["resource"]["fields"]["name"].stringValue && name.hasPrefix("/")

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

if let name = json["resource"]["fields"]["name"].stringValue && "test".hasPrefix("/"){

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

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

感谢您的帮助

1 个答案:

答案 0 :(得分:6)

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

if let name = json["resource"]["fields"]["name"].stringValue {
    if name.hasPrefix("/") {
        // stuff
    }
}

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

  

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

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

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