Mam następujący problem: Otrzymuję wystąpienie klasy, która przeszła i chcę poznać nazwę tej klasy. Jak to zdobyć?
Mam następujący problem: Otrzymuję wystąpienie klasy, która przeszła i chcę poznać nazwę tej klasy. Jak to zdobyć?
Odpowiedzi:
NSStringFromClass([instance class])
powinien załatwić sprawę.
#import <objc/objc-runtime.h>
móc wywołać klasę na instancji.
Z samej klasy
-(NSString *) className
{
return NSStringFromClass([self class]);
}
Po prostu dodaj kategorię:
NSObject+Extensions.h
- (NSString *)className;
NSObject+Extensions.m
- (NSString *)className {
return NSStringFromClass(self.class);
}
Następnie użyj następującego kodu:
NSString *className = [[SomeObject new] className];
lub nawet:
NSString *className = SomeObject.new.className;
Aby użyć go w dowolnym miejscu, dodaj kategorię do pliku YourProject.pch.
OBJC:
NSStringFromClass([instance class])
SZYBKI
Z instancji:
String(describing: YourType.self)
Od typu:
String(describing: self)
Jeśli szukasz sposobu na uzyskanie nazwy klasy w Swift, możesz użyć funkcji Reflect, aby uzyskać informacje o obiekcie.
let tokens = split(reflect(self).summary, { $0 == "." })
if let typeName = tokens.last {
println(typeName)
}
self.dynamicType