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