2017-08-25 74 views
1

我已经为幻灯片菜单控制器定义了一个类。所以,我有以下代码:未使用的可选绑定违例:在使用swiftlint时,将`!= nil`优先于`let _ =`(unused_optional_binding)

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

可选绑定的要点在于,即使您的原始对象也可以被其他线程修改,您仍然可以安全地取得原始可选对象的安全解包副本。因此,不要放弃安全展开的值,稍后使用该值而不是对可选值进行可选链接。

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

    self.delegate?.leftWillClose?() 
    leftVC.beginAppearanceTransition(isLeftHidden(), animated: true) 
    closeLeftWithVelocity(0.0) 
    setCloseWindowLevel() 
} 
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是解开只有一次, 不是两次。

相关问题