Les Optionnels

Comprendre ce que sont les optionnels et comment les utiliser pour gérer les valeurs potentiellement absentes.

Voir sur YouTube

Swift est un langage sensible ; si une variable ou une valeur est nil, l'application va planter et s'arrêter, ce qui est quelque chose que nous voulons absolument éviter.

Pour cela, il existe les optionnels. L'optionnel n'est pas un type en lui-même mais une façon sûre de dire que telle ou telle variable a le droit de ne pas avoir de valeur (être nil).

Pour utiliser un optionnel, nous allons ajouter un ? après le choix du type de variable ou constante.

Déclaration de variables optionnelles

Nous n'allons attribuer aucune valeur aux deux variables :

var nonOptional: String
var optional: String?
print(nonOptional)

Si nous essayons de faire un print de nonOptional, nous avons une erreur. La console nous explique qu'il a été utilisé avant même d'avoir été initialisé.

Par contre, si nous faisons un print de optional :

var nonOptional: String
var optional: String?
print(optional)

Nous obtenons nil (pas de valeur) dans la console.

Ajoutons des valeurs maintenant

var nonOptional: String
var optional: String?
nonOptional = "Je suis non optionnelle"
optional = "Je suis optionnelle"
print(nonOptional)
// Je suis non optionnelle
print(optional)
// Optional("Je suis optionnelle")

nonOptional n'a plus d'erreur car elle a désormais une valeur. Par contre, le print de optional décrit bien la valeur comme optionnelle.

Déballage des optionnels

Lorsque nous devrons utiliser une valeur optionnelle, nous devrons 'déballer' cette valeur pour la rendre non optionnelle avec un ! à la fin du nom de la variable.

var nonOptional: String
var optional: String?
nonOptional = "Je suis non optionnelle"
optional = "Je suis optionnelle"
print(optional!)
// Je suis optionnelle

Et voilà, nous avons à nouveau une valeur non optionnelle, mais à nouveau sensible au crash si la valeur est nil.

Nous verrons dans les conditions comment gérer ceci.