只有 "if let" 的其他块?

Only else-block of "if let"?

cellForRowAtIndexPath 我有:

if let imageView = cell.viewWithTag(SOME_TAG) as? UIImageView
{
    // Nothing to do here.
}
else
{
    // Add image view to cell.
}

但我只需要 else 块。有没有办法反转 if let xyz =?

(我知道我可以把它拆开来 if imageView == nil。)

刚刚找到 this similar question.

你可以使用守卫。它完全满足您的需求:

guard let x = x where x > 0 else {
        // Value requirements not met, do something
        return
    }

是这样的吗?

if cell.viewWithTag(SOME_TAG) == nil {

}

为什么不简单:

if cell.viewWithTag(SOME_TAG) == nil {
    // Add image 
}

... but I only need the else block. Is there a way to invert a if let xyz =?

您想知道是否可以反转 可选绑定子句 的逻辑,仅在可选绑定失败时才输入。但是,这恰好发生在有界的可选表达式(在您的情况下为 cell.viewWithTag(SOME_TAG) as? UIImageView)为 nil 时。因此,对于这种逻辑,没有理由首先尝试绑定值;您只需检查可选表达式是否为 nil.

其他两个答案中已经介绍了执行此操作的直接方法,但作为替代方法,您可以为 .none.

执行模式匹配
if case .none = xyz {
    // implement logic ...
}

或者,应用于您的示例

if case .none = cell.viewWithTag(SOME_TAG) as? UIImageView {
    // implement logic ...
}