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?

War es hilfreich?

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)
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top