2012-06-04 6 views
22

Nếu tôi có lớp con UIViewController, làm cách nào để có được tên lớp là chuỗi? Tôi đã thử làm [vc class], nhưng điều này trả về một đối tượng Class, không phải là NSString.Nhận tên lớp của bộ điều khiển chế độ xem dưới dạng chuỗi

+0

trùng lặp càng tốt này của [Làm thế nào để in loại hoặc lớp của một biến trong Swift?] (http://stackoverflow.com/questions/24006165/how-do-i-print-the-type-or-class-of-a-variable-in-swift) – Dschee

Trả lời

43

NSStringFromClass

Trả về tên của một lớp như là một chuỗi.

NSString * NSStringFromClass ( 
    Class aClass 
); 
+0

Nếu kết thúc ở đây từ google và thực sự muốn câu trả lời SWIFT 3, hãy sử dụng ví dụ: 'Chuỗi (mô tả: MyViewController.self)': https://stackoverflow.com/a/34878224/1736679 – Efren

4

Sử dụng chức năng:

const char * class_getName(Class cls) 

như

class_getName ([vc class]); 
+0

làm cách nào để tôi chuyển từ char * sang NSString? – xonegirlz

+0

Xem câu trả lời của @ JoshCaswell. – GoZoner

+1

bạn không truyền từ char * sang NSString. Bạn phải tạo một chuỗi từ byte bằng cách sử dụng một cuộc gọi như initWithBytes: length: encoding :. Bạn có thể sử dụng mã hóa NSASCIIStringEncoding. Xem thông báo của người đăng khác về NSStringFromClass. Đó là dễ dàng hơn nhiều để sử dụng hơn so với chức năng thời gian chạy Objective C class_getName(). –

4

bạn có thể làm một số điều như sau khi bạn khởi tạo đối tượng của bạn:

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

điều gì sai với câu trả lời này? – shebelaw

+4

xonegirlz hỏi làm thế nào để có được một NSString từ một lớp học, và câu trả lời của bạn nhận được một thể hiện của một lớp học từ một NSString (tức là bạn đã cung cấp cho các đảo ngược của câu trả lời). – Harpastum

18

Bạn có thể làm một cái gì đó giống như

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