quel est l'équivalent de java instanceof dans Swift?
Tout comme java instanceOf mot-clé qui est l'équivalent en Swift?
java exemple:
A a = new A();
boolean isInstanceOfA = a instanceof A;
Ici isInstanceOfA est vrai
Donc j'ai besoin de quelque chose de semblable dans Swift
- essayez opérateur "est": un est Un
- passons sur le fait que j'ai trouvé la réponse dans l'un de stackoverflow salles de chat
- ou devrais-je supprimer cette question si sa déjà la réponse, un lien vers une même question posée serait de bon.
- Vous pouvez utiliser
is
exploitant Un exemple peut être trouvé ici: stackoverflow.com/a/36900103/4791032
Vous devez vous connecter pour publier un commentaire.
isKindOfClass()
méthode, de NSObjectProtocol est l'équivalent de java instanceof mot-clé, en java, c'est un mot clé, mais dans swift c'est un mode de protocole, mais ils se comportent de la même façon, et sont utilisées dans des contextes similaires.Ce qui est exactement ce mot-clé instanceof n'en Java lien
Exemple:
Vous pouvez également utiliser le
is
mot-cléLa différence:
is
fonctionne avec n'importe quelle classe de Swift, alors queisKindOfClass()
fonctionne uniquement avec les classes qui sont des sous-classes deNSObject
ou autrement mettre en œuvreNSObjectProtocol
.is
prend un type qui doit être codée en dur au moment de la compilation.isKindOfClass:
prend une expression dont la valeur peut être calculée au moment de l'exécution.Donc pas de
is
mot-clé ne fonctionne pas commeinstanceof
is
serait la meilleure utilisation.isKindOfClass
méthode etis
mot-cléis
prend un type qui doit être codée en dur au moment de la compilation.isKindOfClass:
prend une expression dont la valeur peut être calculée au moment de l'exécution.Pour swift3 et swift4 c'est:
si votre classe est l'extension de
NSObject
vous pouvez également utiliser:Pour Swift 4.x c'est:
Très court variante(par suggestion @Sulthan):
(self as? T) ?? defaultVal
?Avec objective-c c'est
isKindOfClass:[ClassName class]
.Avec swift c'est
isKindOfClass(Classname.class())
.