Erste Namen der Klasse von einer Instanz
-
19-09-2019 - |
Frage
Ich habe folgendes Problem: Ich erhalte eine Instanz einer Klasse übergeben und soll den Namen der Klasse dieser Instanz kennen. Wie kommt man das?
Lösung
NSStringFromClass([instance class])
sollte es tun.
Andere Tipps
, wenn alles, was Sie tun möchten, ist ein Objekt zu testen, um zu sehen, ob es sich um eine Art von einer bestimmten Klasse
BOOL test = [self isKindOfClass:[SomeClass class]];
Von der Klasse selbst
-(NSString *) className
{
return NSStringFromClass([self class]);
}
Fügen Sie einfach eine Kategorie aus:
NSObject+Extensions.h
- (NSString *)className;
NSObject+Extensions.m
- (NSString *)className {
return NSStringFromClass(self.class);
}
Verwenden Sie dann den folgenden Code:
NSString *className = [[SomeObject new] className];
oder auch:
NSString *className = SomeObject.new.className;
Um es zu nutzen, die Kategorie zu YourProject.pch Datei an beliebiger Stelle hinzufügen.
Sie können auch verwenden [[self class] description]
ObjC:
NSStringFromClass([instance class])
SWIFT
Von Beispiel:
String(describing: YourType.self)
Von Typ:
String(describing: self)
Wenn Sie schauen, wie Klassennamen in Swift erhalten Sie reflektieren verwenden können Informationen über das Objekt zu erhalten.
let tokens = split(reflect(self).summary, { $0 == "." })
if let typeName = tokens.last {
println(typeName)
}