2012-06-04 11 views
22

Wenn ich eine Unterklasse UIViewController habe, wie kann ich den Klassennamen als Zeichenfolge erhalten? Ich habe versucht, [vc class] zu tun, aber dies liefert ein Class Objekt, nicht ein NSString.Ruft den Klassennamen eines View-Controllers als Zeichenfolge ab

+0

möglich Duplikat [Wie kann ich drucken der Typ oder die Klasse einer Variablen in Swift?] (http://stackoverflow.com/questions/24006165/how-do-i-print-the-type-or-class-of-a-variable-in-swift) – Dschee

Antwort

43

NSStringFromClass

Gibt den Namen einer Klasse als String zurück.

NSString * NSStringFromClass ( 
    Class aClass 
); 
+0

Wenn Sie hier von Google enden und die SWIFT 3 Antwort wollen, benutzen Sie zB: 'String (Beschreibung: MyViewController.self)': https://Stackoverflow.com/a/34878224/1736679 – Efren

4

Verwenden Sie die Funktion:

const char * class_getName(Class cls) 

als

class_getName ([vc class]); 
+0

wie kann ich von Char * auf NSString übertragen? – xonegirlz

+0

Siehe @ JoshCaswells Antwort. – GoZoner

+1

Sie nicht von Char * zu NSString zu werfen. Sie müssen eine Zeichenfolge aus Bytes mit einem Aufruf wie initWithBytes erstellen: length: encoding :. Sie würden wahrscheinlich die Codierung NSASCIIStringEncoding verwenden. Siehe die Nachricht des anderen Posters über NSStringFromClass. Das ist viel einfacher zu verwenden als die Objective-C-Laufzeitfunktion class_getName(). –

4

Sie etwas wie folgt tun können, wenn Sie Ihr Objekt instanziiert:

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

Was ist falsch an dieser Antwort? – shebelaw

+4

xonegirlz hat gefragt, wie man einen NSString von einer Klasse bekommt, und deine Antwort erhält eine Instanz einer Klasse von einem NSString (d. H. Du hast die Umkehrung der Antwort gegeben). – Harpastum

18

Sie so etwas wie dieses

tun können
NSString *strClass = NSStringFromClass([viewController class]); 
Verwandte Themen