J'ai le problème suivant: je reçois une instance d'une classe passée et je veux connaître le nom de la classe de cette instance. Comment obtenir ceci?
J'ai le problème suivant: je reçois une instance d'une classe passée et je veux connaître le nom de la classe de cette instance. Comment obtenir ceci?
Réponses:
NSStringFromClass([instance class])
devrait faire l'affaire.
#import <objc/objc-runtime.h>
de pouvoir appeler la classe sur une instance.
De l'intérieur de la classe elle-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.
OBJC:
NSStringFromClass([instance class])
RAPIDE
De l'instance:
String(describing: YourType.self)
Du type:
String(describing: self)
Si vous cherchez comment obtenir le nom de 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)
}
self.dynamicType