Encadeamento opcional com cordas Swift

Com encadeamento opcional, se eu tiver uma variável Swift

var s: String?

s pode conter nulo ou uma String envolvida em um Opcional. Então, eu tentei isso para obter o seu comprimento:

let count = s?.characters?.count ?? 0

No entanto, o compilador deseja o seguinte:

let count = s?.characters.count ?? 0

Meu entendimento do encadeamento opcional é que, assim que você começar a usar?. em uma expressão pontilhada, as demais propriedades são opcionais e geralmente são acessadas por?., não..

Então, eu cavei um pouco mais e tentei isso no playground:

var s: String? = "Foo"
print(s?.characters)
// Output: Optional(Swift.String.CharacterView(_core: Swift._StringCore(_baseAddress: 0x00000001145e893f, _countAndFlags: 3, _owner: nil)))

O resultado indica ques?.characters é realmente uma instância opcional, indicando ques?.characters.count deve ser ilegal.

Alguém pode me ajudar a entender esse estado de coisas?

questionAnswers(2)

yourAnswerToTheQuestion