我想在一个if语句中解包两个选项,但是编译器在操作符密码常量后抱怨了一个预期的表达式.可能是什么原因?
if let email = self.emailField?.text && let password = self.passwordField?.text
{
//do smthg
}
Run Code Online (Sandbox Code Playgroud)
在Swift完成.
这个Swift的成语很有道理
if let x = someDict[someKey] { ... }
Run Code Online (Sandbox Code Playgroud)
但是,我真正想要的是
if let x = someDict[someKey], y = someDict[someOtherKey] { ... }
Run Code Online (Sandbox Code Playgroud)
如上所述,这不是错误的,但这个想法可能吗?
在Swift中,我使用if let
声明来检查我的对象是否不是nil
if let obj = optionalObj
{
}
Run Code Online (Sandbox Code Playgroud)
但有时,我必须面对连续的if let
声明
if let obj = optionalObj
{
if let a = obj.a
{
if let b = a.b
{
// do stuff
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找避免连续if let
声明的方法.
我会尝试类似的东西:
if let obj = optionalObj && if let a = obj.a && if let b = a.b
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
但swift编译器不允许这样做.
有什么建议吗?
我一直在玩swift的可选项.我经常使用条件展开模式:
var myOptional: AnyObject?
if let unwrapped = myOptional {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
但是,有时候我有两个可选值,如果两个都是非零的话我只想使用它们.因此,我尝试使用以下语法:
var myOptional: AnyObject?
var myOtherOptional: AnyObject?
if let unwrapped = myOptional && let otherUnwrapped = myOtherOptional? {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试将这两个部分放在括号等中,但似乎没有办法做到这一点.有没有理由说我不应该这样做?显然我可以在另一个语句中嵌入一个语句,但我更愿意将它全部放在一行上.