如何在 Swift 5 中检查多个字符串不为 nil 且不为空?

3

我希望在if条件语句中检查多个字符串是否为非空和非nil值。

目前我的做法是:

  func isSetupDone(token1: String?, token2: String?, token3: String?) -> Bool{

        if token1 == nil || token1!.isEmpty || token2 == nil  || token2!.isEmpty || token3 == nil || token3!.isEmpty {
            return false
        }
        else{
            return true
        }
    }

但我想在Swift 5中应该有更好的方法来实现这一点。如果有,请建议。

2个回答

3

您可以将所有String添加到一个Array中,然后在该数组上调用allSatisfy方法。

func isSetupDone(token1: String?, token2: String?, token3: String?) -> Bool {
    let tokens = [token1, token2, token3]
    return tokens.allSatisfy { $0 != nil && $0?.isEmpty == false }
}

你也可以通过可选链将两个条件合并成一个,可选字符串可以进行可选链接,因为当$0nil时,$0?.isEmpty == false将评估为false
func isSetupDone(token1: String?, token2: String?, token3: String?) -> Bool {
    [token1, token2, token3].allSatisfy {$0?.isEmpty == false }
}

0

简单循环和可选检查

func isSetupDone(token1: String?, token2: String?, token3: String?) -> Bool{
    let array = [token1, token2, token3]
    for case let element in array {
        if let element = element , !element.isEmpty {
            // do nothing
        } else {
            return false 
        }
    }
    return true 
}

1
空的 if 分支是一种反模式。如果你只需要 else 分支,那么应该否定条件而不是创建一个空的 if 分支。 - Dávid Pásztor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接