我有一个if语句,我希望有两个条件,如下所示:
if let name = json["resource"]["fields"]["name"].stringValue && name.hasPrefix("/")
当我这样做时,我收到错误“使用未解析的标识符名称”。 那么解决方案是什么?
if let name = json["resource"]["fields"]["name"].stringValue && "test".hasPrefix("/"){
如果我这样做,我得到一个错误“可选类型'$ T16'不能用作布尔值;测试'!= nil'而不是”
这可能是一个愚蠢的问题,但我必须承认我迷失了......
感谢您的帮助
答案 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
}
上面的代码应该达到你想要的效果。 (未测试)