Có nhiều phương pháp khác nhau để làm điều đó, nếu phương pháp của bạn được thừa hưởng từ NSObject bạn có thể tiếp xúc với objective- c và làm một cái gì đó như thế.
@objc(BaseAsyncTask)
class BaseAsyncTask: WebServiceClient {
class func execute(content : [String:AnyObject], cancelled:CustomBool)
{
println("Class \(NSStringFromClass(self))")
}
}
Đối với SWIFT tinh khiết kiểm tra mẫn ở đây về MirrorType
tôi đã tìm thấy cũng tín dụng mở rộng này để ImpactZero
public extension NSObject{
public class var nameOfClass: String{
return NSStringFromClass(self).components(separatedBy: ".").last!
}
public var nameOfClass: String{
return NSStringFromClass(type(of: self)).components(separatedBy: ".").last!
}
}
[Xcode 8]
Alex gợi ý với tôi rằng trong Phiên bản Xcode 8 mã này hiển thị cảnh báo. Để tránh điều đó chúng ta nên tiền tố phương pháp như thế:
@nonobjc class var className: String{
return NSStringFromClass(self).components(separatedBy: ".").last!
}
NSStringFromClass (self) .componentsSeparatedByString ("."). làm việc như một say mê. Đã không xảy ra với tôi để thử tự mà không có dynamicType, cảm ơn. –
AWASOME! thanks :) –
@Andrea, tôi cũng sẽ đề xuất thêm thuộc tính '@ nonobjc' trước' lớp công khai var nameOfClass' để tránh cảnh báo sau (Xcode 8.2): "ld: warning: Một số tệp đối tượng có danh mục Mục tiêu-C không tương thích Một số siêu dữ liệu về danh mục có thể bị mất. Tất cả các tệp chứa các mục tiêu C phải được xây dựng bằng cách sử dụng cùng một trình biên dịch. " Giống như vậy: '@nonobjc class var className: String {return NSStringFromClass (tự) .components (separatedBy:". "). } ' – Alex