J'ai besoin de tester si l'objet est de type NSString
ou UIImageView
. Comment puis-je accomplir cela? Existe-t-il un type de méthode "isoftype"?
ios
objective-c
James Skidmore
la source
la source
[object isKindOfClass:[ClassName class]]
Réponses:
Si votre objet est
myObject
, et que vous souhaitez tester pour voir s'il s'agit d'unNSString
, le code serait:De même, si vous vouliez tester
myObject
pourUIImageView
:la source
Vous utiliseriez probablement
Ceci est une méthode de
NSObject
.Pour plus d'informations, consultez la
NSObject
documentation.Voici comment vous l'utilisez.
Vous pourriez aussi essayer de faire quelque chose comme ça
la source
className
, il peut ou non fonctionner sur OS X, mais ce n'est pas dans iOS et il n'est pas destiné à être utilisé pour cela. De plus, cesNSLog
s ne font pas ce que je pense que vous vouliez dire - ils vérifient le nom de la classe (toujours une chaîne) et la classe du codeur, étrangement, au lieu de la classe de l'élément réel.NSLog(@"Is of type: %@", [element class]);
fonctionnera dans iOS 7Lorsque vous souhaitez faire la différence entre une superClass et la inheritedClass, vous pouvez utiliser:
L'utilisation
- (BOOL)isKindOfClass:(Class)aClass
dans ce cas se traduirait par TRUE les deux fois car la inheritedClass est également une sorte de superClass.la source
isMemberOfClass:
reviendraNO
lors du traitement des sous-classes.En exécutant un test simple, j'ai pensé documenter ce qui fonctionne et ce qui ne fonctionne pas. Souvent, je vois des gens vérifier si la classe de l'objet est membre de l'autre classe ou est égale à l'autre classe.
Pour la ligne ci-dessous, nous avons des données mal formées qui peuvent être un
NSArray
, unNSDictionary
ou(null)
.Ce sont les tests qui ont été effectués:
isKindOfClass
a plutôt bien fonctionné, maisisMemberOfClass
pas.la source
Vous pouvez utiliser le code suivant dans le cas où vous souhaitez vérifier les types de types de données primitifs.
la source
Simple, [votre classe d'objet], elle renverra le nom de classe de votre objet.
la source
Class
objet. Cependant, le nomdescription
de cet objet sera le nom de la classe sous forme de chaîne, vous pouvez donc toujours le connecter à la console.