Ich habe das folgende Problem: Ich erhalte eine Instanz einer Klasse übergeben und möchte den Namen der Klasse dieser Instanz wissen. Wie bekomme ich das?
Ich habe das folgende Problem: Ich erhalte eine Instanz einer Klasse übergeben und möchte den Namen der Klasse dieser Instanz wissen. Wie bekomme ich das?
Antworten:
NSStringFromClass([instance class])
sollte den Trick machen.
#import <objc/objc-runtime.h>
, die Klasse für eine Instanz aufrufen zu können.
Aus der Klasse heraus
-(NSString *) className
{
return NSStringFromClass([self class]);
}
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 es überall zu verwenden, fügen Sie die Kategorie zur Datei YourProject.pch hinzu.
Sie können auch verwenden [[self class] description]
OBJC:
NSStringFromClass([instance class])
SCHNELL
Von der Instanz:
String(describing: YourType.self)
Vom Typ:
String(describing: self)
Wenn Sie suchen, wie Sie den Klassennamen in Swift erhalten, können Sie Reflect verwenden, um Informationen zum Objekt abzurufen.
let tokens = split(reflect(self).summary, { $0 == "." })
if let typeName = tokens.last {
println(typeName)
}
self.dynamicType