Неиспользуемое необязательное нарушение привязки: при использовании 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()
  }

Но я получил следующее предупреждение, пока шелушился быстрым ворсом. Отображаемое предупреждение, как показано ниже: Предупреждение

Как решить это предупреждение?

2 ответа

Весь смысл необязательного связывания заключается в том, чтобы получить безопасно развернутую копию исходного необязательного объекта, которую вы можете безопасно использовать, даже если ваш исходный объект может быть изменен и другими потоками. Так что не отбрасывайте безопасно развернутое значение, используйте это значение позже вместо того, чтобы делать необязательную цепочку для необязательного значения.

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

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

Не отбрасывайте значение необязательного связывания, используйте его!

Вместо тестирования на 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 разворачивается только один раз, а не дважды.

Другие вопросы по тегам