2012-06-04 4 views
22

Если у меня есть подкласс UIViewController, как я могу получить имя класса в виде строки? Я пробовал делать [vc class], но это возвращает объект Class, а не NSString.Получить имя класса контроллера контроллера как строку

+0

возможный дубликат [Как распечатать тип или класс переменной в Swift?] (http://stackoverflow.com/questions/24006165/how-do-i-print-the-type-or-class-of-a-variable-in-swift) – Dschee

ответ

43

NSStringFromClass

Возвращает имя класса в виде строки.

NSString * NSStringFromClass ( 
    Class aClass 
); 
+0

Если вы заканчиваете работу с Google и на самом деле хотите получить ответ SWIFT 3, используйте, например: 'String (описывающий: MyViewController.self)': https://stackoverflow.com/a/34878224/1736679 – Efren

4

Используйте функцию:

const char * class_getName(Class cls) 

в

class_getName ([vc class]); 
+0

как мне лить из char * в NSString? – xonegirlz

+0

См. Ответ @ JoshCaswell. – GoZoner

+1

вы не отбрасываете из char * в NSString. Вы должны создать строку из байтов, используя вызов типа initWithBytes: length: encoding :. Вероятно, вы использовали бы кодировку NSASCIIStringEncoding. См. Сообщение другого плаката о NSStringFromClass. Это гораздо проще в использовании, чем функция времени выполнения Objective C class_getName(). –

4

вы можете сделать некоторые вещи, как следующий, когда вы создать экземпляр объекта:

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

что не так с этим ответом? – shebelaw

+4

xonegirlz спросил, как получить NSString из класса, и ваш ответ получает экземпляр класса из NSString (т. Е. Вы ответили на ответ). – Harpastum

18

Вы можете сделать что-то вроде этого

NSString *strClass = NSStringFromClass([viewController class]); 
Смежные вопросы