Cette documentation est encore en cours de rédaction chez Apple et des corrections peuvent être apportées au cours des semaines à venir.

Les optionnelles vous autorisent à vérifier des valeurs qui peuvent exister ou ne pas exister, et à écrire du code qui fonctionne sans problème même lorsqu’il n’y a pas de valeurs.

Dans certains cas néanmoins, il n’est simplement pas possible que votre code puisse continuer son exécution si aucune valeur n’existe, ou si vous n’avez pas fourni de valeur adéquate. Dans ces situations, vous pouvez déclencher une assertion dans votre code pour terminer son exécution et vous donner l’opportunité de le debugger à l’endroit où elle détecte une valeur manquante ou invalide.

Debugger avec les assertions

Une assertion est une condition logique qui va stopper l’exécution de votre programme tant qu’elle ne sera pas true. Littéralement, écrire une assertion signifie qu’elle doit être forcement vraie. Vous utiliserez une assertion pour vous assurer qu’une condition est satisfaite avant d’exécuter la suite de votre programme. Si la condition est évaluée à true, l’exécution du code continue de façon totalement transparente. Si la condition est évaluée à false, l’exécution du code prend fin et votre application est stoppée.

Si votre code déclenche une assertion alors qu’il s’exécute dans un environnement de débogage, comme quand vous développez et testez votre application depuis Xcode, vous pourrez détecter exactement l’endroit précis qui pose problème, là où une valeur manquante ou invalide a été détecté pendant l’exécution du programme. Le message d’erreur provoqué par une assertion peut-être personnalisé et vous aider à corriger plus rapidement les problèmes.

Vous écrivez une assertion en appelant la fonction globale assert. Donnez ensuite à la fonction assert une expression à évaluer à true ou false, ainsi qu’un message qui ne sera affiché que lorsque que la condition sera à false.

1 let age = -3
2 assert(age >= 0, "Une personne ne peut pas avoir un âge inférieur à zéro")
3 // Déclenche une assertion car l'âge est inférieur à 0

Dans cet exemple, l’exécution du code ne continuera uniquement que si age >= 0 est évalué à true, en gros, si la valeur de age c’est pas négative. Si la valeur de age est négative, comme dans le bout de code ci-dessus, alors la condition age >= 0 est évaluée à false et l’assertion est déclenchée, l’application est stoppée.

Les messages d’assertion ne peuvent pas utiliser l’interpolation de chaînes de caractères. Le message d’assertion n’est pas obligatoire et peut-être oublié si désiré :

1 assert(age >= 0)

Quand utiliser les assertions ?

Utilisez les assertions lorsqu’une condition peu potentiellement être fausse et doit forcement être vraie pour que votre code puisse continuer de s’exécuter. Les scénarios appropriés à l’utilisation des assertions sont :

  • La valeur fournie peut être trop basse ou trop élevée
  • Une valeur est fournie à une fonction, mais la valeur est invalide
  • Une valeur optionnelle actuellement à nil, mais une valeur non nulle est requise

Note : Les assertions arrêtent votre application mais ne doivent pas être utilisées dans votre application finale, elles sont là uniquement durant le processus de développement pour accélérer les choses.