Ho il seguente problema: Ricevo un'istanza di una classe e desidero conoscere il nome della classe di questa istanza. Come si può ottenere?
Ho il seguente problema: Ricevo un'istanza di una classe e desidero conoscere il nome della classe di questa istanza. Come si può ottenere?
Risposte:
NSStringFromClass([instance class])
dovrebbe fare il trucco.
#import <objc/objc-runtime.h>
poter chiamare la classe su un'istanza.
Dall'interno della classe stessa
-(NSString *) className
{
return NSStringFromClass([self class]);
}
Aggiungi una categoria:
NSObject+Extensions.h
- (NSString *)className;
NSObject+Extensions.m
- (NSString *)className {
return NSStringFromClass(self.class);
}
Quindi utilizzare il seguente codice:
NSString *className = [[SomeObject new] className];
o anche:
NSString *className = SomeObject.new.className;
Per usarlo ovunque aggiungi la categoria al file YourProject.pch.
objc:
NSStringFromClass([instance class])
SWIFT
Dall'istanza:
String(describing: YourType.self)
Dal tipo:
String(describing: self)
Se stai cercando come ottenere il nome di classe in Swift, puoi usare la modalità refl per ottenere informazioni sull'oggetto.
let tokens = split(reflect(self).summary, { $0 == "." })
if let typeName = tokens.last {
println(typeName)
}
self.dynamicType