149 votes

Obtenir le nom de la classe à partir d'une instance

Je rencontre le problème suivant : je reçois une instance d'une classe en argument et je veux connaître le nom de la classe de cette instance. Comment puis-je obtenir cela ?

0 votes

Peut-être reformuler votre question ou accepter la réponse qui correspond à la question?

0 votes

@JasperBlues : Terminé, je n'avais même pas réalisé à quel point c'était devenu populaire!

2voto

ealee Points 41

Il suffit d'ajouter 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.

0voto

Roman Barzyczak Points 754

Si vous cherchez comment obtenir le nom de la classe en 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)
}

0voto

crifan Points 1242
  • par exemple
    • NSString* classNameNSStr = [someObjcInstance className]
  • pour la classe
    • NSString* classNameNSStr = NSStringFromClass(someObjcClass)
    • const char* className = object_getClassName(someObjcClass)

--> liés :

  • juste pour comparer si c'est une certaine classe ou non
    • -> pas besoin d'obtenir le nom de la classe, il suffit d'utiliser isKindOfClass :
      • BOOL isSameClass = [someObjcInstance isKindOfClass: SomeClass];
        • SomeClass peut être obtenu à partir de : objc_getClass("SomeClassName")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X