Obtenha o melhor ViewController no iOS Swift

Desejo implementar uma classe ErrorHandler separada, que exibe mensagens de erro em determinados eventos. O comportamento desta classe deve ser chamado de diferentes outras classes. Quando ocorrer um erro, ele terá umUIAlertView como saída. A exibição deste AlertView SEMPRE deve estar no topo. Portanto, não importa de onde o erro seja lançado, o viewController superior deverá exibir o AlertMessage (por exemplo, quando um processo em segundo plano assíncrono falhar, desejo uma mensagem de erro, independentemente da visualização exibida em primeiro plano).

Encontrei várias dicas que parecem resolver o meu problema (veja o código abaixo). Mas chamandoUIApplication.sharedApplication().keyWindow?.visibleViewController() retorna um valor nulo.

Extensão da essência

extension UIWindow {
func visibleViewController() -> UIViewController? {
if let rootViewController: UIViewController  = self.rootViewController {
  return UIWindow.getVisibleViewControllerFrom(rootViewController)
}
return nil
}

class func getVisibleViewControllerFrom(vc:UIViewController) -> UIViewController {

if vc.isKindOfClass(UINavigationController.self) {

  let navigationController = vc as! UINavigationController
  return UIWindow.getVisibleViewControllerFrom( navigationController.visibleViewController)

} else if vc.isKindOfClass(UITabBarController.self) {

  let tabBarController = vc as! UITabBarController
  return UIWindow.getVisibleViewControllerFrom(tabBarController.selectedViewController!)

} else {

  if let presentedViewController = vc.presentedViewController {

    return UIWindow.getVisibleViewControllerFrom(presentedViewController.presentedViewController!)

  } else {

    return vc;
  }
}
}
}