Le plus souvent, vous voudrez non seulement vérifier le type, mais aussi effectuer un cast vers ce type. Dans ce cas, utilisez :
if let gestureRecognizer as? UITapGestureRecognizer { }
else { /* not a UITapGestureRecognizer */ }
Opérateurs de coulée rapide
Ces opérateurs sont uniquement disponibles en Swift, mais fonctionnent toujours lorsqu'il s'agit de types Objective C.
-
El as
opérateur
-
El as?
opérateur
-
El as!
opérateur
Vérification rapide des types
Si vous voulez simplement vérifier le type d'une expression, sans à ce type, alors vous pouvez utiliser ces approches. Elles ne sont disponibles qu'en Swift, mais fonctionnent toujours lorsqu'il s'agit de types Objective C.
-
El is
opérateur
- El
is
vérifie au moment de l'exécution si l'expression peut être convertie dans le type spécifié. Il retourne true
si l'expression peut être convertie dans le type spécifié ; sinon, elle renvoie le résultat suivant false
- Fonctionne sur tous les types de Swift, y compris les types Objective C.
- L'équivalent en Swift de
isKind(of:)
-
- Contrairement à la
is
on peut l'utiliser pour vérifier le type exact, sans tenir compte des sous-classes.
- Peut être utilisé comme :
type(of: instance) == DesiredType.self
- L'équivalent en Swift de
isMember(of:)
Méthodes héritées (Objective C) pour vérifier les types
Ce sont toutes des méthodes sur NSObjectProtocol
. Ils peuvent être utilisés dans le code Swift, mais ils ne s'appliquent qu'aux classes qui dérivent de NSObjectProtocol
(telles que les sous-classes de NSObject
). Je vous déconseille de les utiliser, mais je les mentionne ici par souci d'exhaustivité.
-
- Renvoie une valeur booléenne qui indique si le récepteur est une instance de la classe donnée. ou une instance de toute classe qui hérite de cette classe
- Pour éviter cela en Swift, utilisez
is
à la place.
-
- Renvoie une valeur booléenne qui indique si le récepteur est une instance d'une classe donnée.
- Pour éviter cela en Swift, utilisez
type(of: instance) == DesiredType.self
à la place.
-
- Renvoie une valeur booléenne qui indique si le récepteur se conforme à un protocole donné.
- Pour éviter cela en Swift, utilisez
is
à la place.
1 votes
Quels correctifs le compilateur vous offre-t-il ? ;)
0 votes
Este
if gestureRecognizer.isMember(of: UITapGestureRecognizer()) { }
ce qui ne fonctionne pas.0 votes
Cliquez sur l'octogone rouge, le compilateur vous montrera deux fix-its (l'un d'eux résout votre problème :) ).
1 votes
@VanDuTran Votre réponse a-t-elle été satisfaite ?
0 votes
Voir cette réponse