Mam następujący problem: Otrzymuję wystąpienie klasy przekazanej i chcę znać nazwę klasy tej instancji. Jak to zdobyć?Pobieranie nazwy klasy z instancji
Odpowiedz
jeśli wszystko, co chcesz zrobić, to sprawdzić obiekt, aby zobaczyć, czy jest to rodzaj pewnej klasy
BOOL test = [self isKindOfClass:[SomeClass class]];
Dzięki, wykorzystam to :) – Robin
Wzniesiono głos dla przewidywania potrzeby, a nie tylko odpowiedzi na pytanie. –
Od wewnątrz samego
-(NSString *) className
{
return NSStringFromClass([self class]);
}
Absolutnie nie chcę wzbudzać złości, ale była to druga odpowiedź związana z systemem iOS w twoim profilu. Wydaje mi się, że dodam tylko, że możemy odnieść się do instancji jako "ja" z poziomu jej wdrożenia. Czy broniłbyś tego, dodając zasadniczo do przyjętej trzyletniej odpowiedzi? – danh
@danh Widzę, że mnie ścigasz. Dobrze dla ciebie! –
Przepraszam, po prostu kliknąłem ten i zastanawiałem się, czy coś powiedzieć. Po prostu chciałem zrobić delikatne ściągacze, ale wiem, że w tych semi-anonimowych ustawieniach temperament bardzo szybko się rozgrzewa. Dziękuję za to, że jesteście z tego dobroduszni. (W rzeczywistości +1 za praktykowanie enkapsulacji). – danh
klasie Jeśli szukasz jak dostać classname w Swift możesz użyć reflect, aby uzyskać informacje o obiekcie.
let tokens = split(reflect(self).summary, { $0 == "." })
if let typeName = tokens.last {
println(typeName)
}
lub po prostu 'self.dynamicType' – jbg
Można również użyć [[self class] description]
Wystarczy dodać kategorię:
NSObject+Extensions.h
- (NSString *)className;
NSObject+Extensions.m
- (NSString *)className {
return NSStringFromClass(self.class);
}
następnie użyć 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.
Po wywołaniu klasy Swift zwraca ona nazwę klasy o podanej nazwie. – Alper
Być może przeredagować pytanie lub zaakceptować odpowiedź pasującą do pytania? –
@JasperBlues: Zrobione, nawet nie zdawałem sobie sprawy, jak bardzo jest to popularne! – Robin