Istnieją różne metody, aby to zrobić, jeśli metoda dziedziczy z NSObject można narażać go na objective- c i zrób coś takiego.
@objc(BaseAsyncTask)
class BaseAsyncTask: WebServiceClient {
class func execute(content : [String:AnyObject], cancelled:CustomBool)
{
println("Class \(NSStringFromClass(self))")
}
}
do czystej SWIFT introspekcji sprawdzanie o MirrorType
Znalazłem też to rozszerzenie kredytów do 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 zasugerował mi, że w Wersja Xcode 8 ten kod pokazuje ostrzeżenie. Aby tego uniknąć należy poprzedzić metoda tak:
@nonobjc class var className: String{
return NSStringFromClass(self).components(separatedBy: ".").last!
}
NSStringFromClass (self) .componentsSeparatedByString (""). Ostatni! pracował jako urok. Nie przyszło mi do głowy, aby wypróbować self bez dynamicType, dziękuję. –
AWASOME! dzięki :) –
@Andrea, Proponuję również dodać atrybut '@ nonobjc' przed' public class var nameOfClass' aby uniknąć następującego ostrzeżenia (Xcode 8.2): "ld: warning: Niektóre pliki obiektów mają niekompatybilną kategorię Objective-C Definicje Niektóre metadane kategorii mogą zostać utracone Wszystkie pliki zawierające kategorie Cel-C powinny być zbudowane przy użyciu tego samego kompilatora. " Podobnie jak w przypadku: '@nonobjc class var className: String {return NSStringFromClass (self) .components (separatedBy:". "). Last! } ' – Alex