相关疑难解决方法(0)

在if语句中展开多个选项

我想在一个if语句中解包两个选项,但是编译器在操作符密码常量后抱怨了一个预期的表达式.可能是什么原因?

    if let email = self.emailField?.text && let password = self.passwordField?.text
    {
        //do smthg
    }
Run Code Online (Sandbox Code Playgroud)

在Swift完成.

optional swift

60
推荐指数
5
解决办法
3万
查看次数

使用带有许多表达式的"if let ..."

这个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

22
推荐指数
1
解决办法
9890
查看次数

避免在Swift中连续"if let"声明

在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

18
推荐指数
2
解决办法
3010
查看次数

为什么多个展开选项不可能?

我一直在玩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)

我已经尝试将这两个部分放在括号等中,但似乎没有办法做到这一点.有没有理由说我不应该这样做?显然我可以在另一个语句中嵌入一个语句,但我更愿意将它全部放在一行上.

if-statement optional swift

1
推荐指数
2
解决办法
217
查看次数

标签 统计

swift ×4

optional ×2

if-statement ×1