it-swarm.com.de

Name der Klasse von einer Instanz abrufen

Ich habe folgendes Problem: Ich bekomme eine Instanz einer Klasse übergeben und möchte den Namen der Klasse dieser Instanz erfahren. Wie bekomme ich das?

128
Robin

NSStringFromClass([instance class]) sollte den Trick tun.

364
CiNN

wenn Sie nur ein Objekt testen möchten, um zu sehen, ob es sich um einen Typ einer bestimmten Klasse handelt

BOOL test = [self isKindOfClass:[SomeClass class]];
28
kubi

Aus der Klasse selbst heraus

-(NSString *) className
{
    return NSStringFromClass([self class]);
}
16
Katedral Pillon

Fügen Sie einfach eine Kategorie hinzu:

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 sie überall zu verwenden, fügen Sie die Kategorie der Datei YourProject.pch hinzu.

2
ealee

Sie können auch [[self class] description] verwenden.

1
Jeremie

OBJC:

NSStringFromClass([instance class])

Swift

Von der Instanz:

String(describing: YourType.self)

Vom Typ:

String(describing: self)
1
Lal Krishna

Wenn Sie nach dem Klassennamen in Swift suchen, können Sie reflect verwenden, um Informationen zum Objekt zu erhalten.

let tokens = split(reflect(self).summary, { $0 == "." })
if let typeName = tokens.last {
    println(typeName)
}
0
Roman Barzyczak