Obtenga el nombre de class de UIViewController en swift

Cómo get el nombre de class de la class UIViewController en swift

En el Objetivo C, podemos hacer algo como esto:

 self.appDelegate = (shAppDelegate *)[[UIApplication shanetworkingApplication] delegate]; UIViewController *last_screen = self.appDelegate.popScreens.lastObject ; if(last_screen.class != self.navigationController.visibleViewController.class){ //....... } 

pero en rápido intenté así

 let appDelegate = UIApplication.shanetworkingApplication().delegate as AppDelegate let last_screen = appDelegate.popScreens?.lastObject as UIViewController 

no puedo hacer esto

 if last_screen.class != self.navigationController.visibleViewController.class{ //.... } 

no hay un método de class de UIViewController es decir, la última pantalla

Para saber tu nombre de class puedes llamar a algo como esto:

 var className = NSStringFromClass(yourClass.classForCoder) 

Ampliando la respuesta de juangdelvalle.

Agregué esto como una extensión para que sea reutilizable y más fácil de llamar desde cualquier controller de vista. También en algunos casos NSStringFromClass en Swift devuelve una cadena en el formatting como este:

<nombre del proyecto> .viewControllerClassName .

Esta propiedad de extensión se modifica para deshacerse del prefijo del nombre del proyecto y devolver solo el nombre de la class.

 extension UIViewController { var className: String { return NSStringFromClass(self.classForCoder).componentsSeparatedByString(".").last! } } 

Aquí hay una versión swift3 de la respuesta de isuru.

 extension UIViewController { var className: String { return NSStringFromClass(self.classForCoder).components(separatedBy: ".").last!; } } 

La propiedad se llama dynamicType en Swift.