Swift comparant les strings optionnelles vs non optionnelles

Lorsque vous comparez des strings dans Swift, vous pouvez comparer des strings non optionnelles avec des strings optionnelles.

Comme si (le text est facultatif et vide):

UITextField.text == "" // True 

Est-ce parce que l'opérateur d'égalité déballe Ssortingngs par lui-même?

Pour chaque type Equatable l'opération == est également définie pour les options:

 public func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool 

Le non-optionnel sur le côté droit est automatiquement promu en option.

La valeur == pour les optionnels renvoie true lorsque les deux valeurs sont nil ou si elles sont toutes deux non nulles et égales.

Votre théorie ne tient pas dans l'exemple suivant:

 let x: Ssortingng? = nil if x == "" { print("True") } else { print("False") //Printed } 

Ce qui se passe ici, c'est que la propriété text n'est jamais nil à l'initialisation – c'est plutôt une string vide, comme indiqué par la documentation :

Cette string est @ "" par défaut.

Le compilateur Swift ne dévoile pas implicitement les options, mais laisse cette responsabilité au programmeur.