J'ai le problème suivant: une instance d'une classe est transmise et je souhaite connaître le nom de la classe de cette instance. Comment obtenir ceci?
NSStringFromClass([instance class])
devrait faire l'affaire.
si tout ce que vous voulez faire est de tester un objet pour voir si c'est un type d'une certaine classe
BOOL test = [self isKindOfClass:[SomeClass class]];
De la classe même
-(NSString *) className
{
return NSStringFromClass([self class]);
}
Ajoutez simplement une catégorie:
NSObject+Extensions.h
- (NSString *)className;
NSObject+Extensions.m
- (NSString *)className {
return NSStringFromClass(self.class);
}
Ensuite, utilisez le code suivant:
NSString *className = [[SomeObject new] className];
ou même:
NSString *className = SomeObject.new.className;
Pour l'utiliser n'importe où, ajoutez la catégorie au fichier YourProject.pch.
Vous pouvez également utiliser [[self class] description]
OBJC:
NSStringFromClass([instance class])
Rapide
Par exemple:
String(describing: YourType.self)
De type:
String(describing: self)
Si vous cherchez comment obtenir le nom de la classe dans Swift, vous pouvez utiliser reflect pour obtenir des informations sur l'objet.
let tokens = split(reflect(self).summary, { $0 == "." })
if let typeName = tokens.last {
println(typeName)
}