2012-06-04 8 views
22

Si tengo una subclase UIViewController, ¿cómo puedo obtener el nombre de clase como cadena? He intentado hacer [vc class], pero esto devuelve un objeto Class, no un NSString.Obtener un nombre de clase de controlador de vista como cadena

+0

posible duplicado de [¿Cómo puedo imprimir el tipo o clase de una variable en Swift?] (http://stackoverflow.com/questions/24006165/how-do-i-print-the-type-or-class-of-a-variable-in-swift) – Dschee

Respuesta

43

NSStringFromClass

Devuelve el nombre de una clase como una cadena.

NSString * NSStringFromClass ( 
    Class aClass 
); 
+0

Si termina aquí desde Google y desea realmente la respuesta de SWIFT 3, use, por ejemplo: 'String (describiendo: MyViewController.self)': https://stackoverflow.com/a/34878224/1736679 – Efren

4

Uso de la función:

const char * class_getName(Class cls) 

como

class_getName ([vc class]); 
+0

cómo lo hago transmitir de char * a NSString? – xonegirlz

+0

Ver la respuesta de @ JoshCaswell. – GoZoner

+1

no se convierte de char * a NSString. Debe crear una cadena de bytes utilizando una llamada como initWithBytes: length: encoding :. Probablemente usarías usar la codificación NSASCIIStringEncoding. Vea el mensaje del otro cartel sobre NSStringFromClass. Eso es mucho más fácil de usar que la función de tiempo de ejecución Objective C class_getName(). –

4

que puede hacer algo como lo siguiente cuando se instancia el objeto:

[[NSClassFromString(@"className1") alloc] init]; 
+0

¿Qué está mal con esta respuesta? – shebelaw

+4

xonegirlz preguntó cómo obtener un NSString de una clase, y su respuesta obtiene una instancia de una clase de un NSString (es decir, usted dio el reverso de la respuesta). – Harpastum

18

Puede hacer algo como esto

NSString *strClass = NSStringFromClass([viewController class]); 
Cuestiones relacionadas