未使用的可选绑定冲突:使用swiftlint时,首选`!= nil`超过`let _ =`(unused_optional_binding)

时间:2017-08-25 13:18:27

标签: ios swift3 swiftlint

我为幻灯片菜单控制器定义了一个类。所以我有这样的代码:

 open override func closeLeft() {
    guard let _ = leftViewController else { // If leftViewController is nil, then return
      return
    }
    self.delegate?.leftWillClose?()
    leftViewController?.beginAppearanceTransition(isLeftHidden(), animated: true)
    closeLeftWithVelocity(0.0)
    setCloseWindowLevel()
  }

但是在快速掉毛的时候,我得到了以下警告。显示的警告如下: Warning

如何解决此警告?

2 个答案:

答案 0 :(得分:2)

可选绑定的重点是获取可以安全使用的原始可选对象的安全解包副本,即使原始对象也可以被其他线程修改。因此,不要丢弃安全解包的值,稍后使用该值而不是对可选值进行可选链接。

open override func closeLeft(){
    guard let leftVC = leftViewController else { return }

    self.delegate?.leftWillClose?()
    leftVC.beginAppearanceTransition(isLeftHidden(), animated: true)
    closeLeftWithVelocity(0.0)
    setCloseWindowLevel()
}

答案 1 :(得分:1)

不要丢弃可选绑定的值,使用它!

而不是测试nil然后选择后续链接

open override func closeLeft() {
    guard let _ = leftViewController else { return } 
    // ...
    leftViewController?.beginAppearanceTransition(isLeftHidden(), animated: true)
    // ...
}

将展开的值分配给局部变量并使用它:

open override func closeLeft() {
    guard let leftVC = leftViewController else { return } 
    // ...
    leftVC.beginAppearanceTransition(isLeftHidden(), animated: true)
    // ...
}

这更简单,因为leftViewController只被解包一次, 不是两次。