Convert Swift 3 -> Swift 4/5


#1

День добрый.
Не могу решить проблему :slightly_frowning_face:
Как можно перевести код на новую версию Swift

protocol HideableHairlineViewController {

 func hideHairline()
 func showHairline()
}

extension HideableHairlineViewController where Self: UIViewController {

  func hideHairline() {
     findHairline()?.isHidden = true
  }

  func showHairline() {
      findHairline()?.isHidden = false
    }

    private func findHairline() -> UIImageView? {
return navigationController?.navigationBar.subviews
  .flatMap { $0.subviews }
  .flatMap { $0 as? UIImageView }
  .filter { $0.bounds.size.width == self.navigationController?.navigationBar.bounds.size.width }
  .filter { $0.bounds.size.height <= 2 }
  .first
    }

  }

#2

Попробуйте

private func findHairline() -> UIImageView? {
    return navigationController?.navigationBar.subviews
        .compactMap { $0 as? UIImageView }
        .filter { $0.bounds.size.width == self.navigationController?.navigationBar.bounds.size.width && $0.bounds.size.height <= 2}
        .first
}

но не тестировал, написал в ходу))


#3

Код принимает, но не срабатывает :slightly_frowning_face:
Пошел другим путем
Спасибо за помощь


#4

в продолжение темы - а есть ли какие тулсы, чтобы конвертировать проект полностью из Swift 3 в swift 5?


#5

В большинстве случаев- приходится все вручную делать