只有 "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 ...
}
在 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 ...
}