Selon l'en-tête Swift pour String
Pourquoi le compilateur me dire que je dois déballer un Bool (? Non en option)
la propriété isEmpty
est un Bool
(pas un droit en option?)
public var isEmpty: Bool { get }
mais dans mon code, lorsque je tente d'écrire:
!sender.titleOfSelectedItem?.isEmpty
Valeur de type en option
Bool?
non déballé, vouliez-vous utiliser "?" ou "!"
Pourquoi le compilateur pense-t-il que isEmpty
est une option?
Est-ce parce que l'objet qui contient la propriété est actuellement facultatif?
titleOfSelectedItem
est un String?
ou suis-je manque juste tout à fait quelque chose, ici?
ty d'un optionnel devient un optionnel quand il est chaîné? Je suppose que j'ai juste supposé que la liaison optionnelle éclaterait quand le récepteur (facultatif) serait nul, et ne vérifierait pas les propriétés de la chaîne –
La propriété ne devient pas optionnelle. Le résultat de la chaîne optionnelle est facultatif. Si un lien dans la chaîne est 'nil', la chaîne se casse et retourne' nil'. Comme la chaîne peut avoir un résultat nul, le type du résultat doit être optionnel car seul un optionnel peut être 'nil'. C'est * chaînage optionnel *. La liaison facultative est 'si let variable = expression optionnelle'. Vous pouvez combiner les deux car l'expression * optionnelle * peut être une * chaîne optionnelle *. – vacawama
ah ok, totalement l'obtenir maintenant, était confus de la chaîne optionnelle et liaison facultative. Merci pour l'explication! –