2016-08-04 46 views
48

Swift手册的第61页的Swift文档提示使用where可以使用常规条件来加入可选绑定。然而,当我这样做,我有一个警告,建议我在下面的代码段用逗号代替where,如:在Swift中使用if赋予的位置

if let geocodingError = error as? NSError where geocodingError.code == 2 

回答

115

在斯威夫特3本语法发生了变化。

什么

if let x = y, a = b where a == x {

现在是

if let x = y, let a = b, a == x {

的理由是,if ... {的每个子子句现在是一个独立的布尔测试。

有关此更改的详细信息,请参阅Xcode Release notes &的Swift Evolution proposal

+4

又一变化。文档中的where子句依然存在。无论如何,使用你建议的表单工作正常。 –

+0

在Xcode 8 Beta 4发行说明中的​​其他地方描述了此更改吗?例如。进化/其他官方文档?我可能会注意到其他读者,我们仍然被提示使用'where'子句将变量绑定与条件分开,如果使用例如。 IBM Sandbox中的Swift 3.0-dev。 – dfri

+0

更新到Swift 3的文档仍然有在线的地方。说这是令人困惑的是轻描淡写。现在看来他们正在为了它而改变事情,比如现在需要截止时间而不是时间的DispatchQueue。 –

2

实施例与两个条件

if let x = y, let a = b, a == x && !x.isEmpty { 
3

在xcode的9

if let str = textField.text as String!, !str.isEmpty 
{ 
    params[key] = str 
    TextFieldHelper.setup(textField: textField) 
} 
else 
{ 
    TextFieldHelper.error(textField: textField) 
}