2012-06-04 33 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

如果從谷歌結束並實際上想要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]); 
相關問題