[swift-users] Optional chaining and String properties

Stephen Schaub sschaub at gmail.com
Mon Aug 1 12:26:35 CDT 2016

With optional chaining, if I have a Swift variable

    var s: String?

s might contain nil, or a String wrapped in an Optional. So, I tried this
to get its length:

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

However, the compiler wants this:

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

or this:

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

My understanding of optional chaining is that, once you start using '?.' in
a dotted expression, the rest of the properties evaluate as optional and
are typically accessed by '?.', not '.'.

So, I dug a little further and tried this in the playground:

var s: String? = "Foo"

The result indicates that s?.characters is indeed an Optional instance,
indicating that s?.characters.count should be illegal.

Why is s?.characters.count a legal expression?

Stephen Schaub
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160801/8e778948/attachment.html>

More information about the swift-users mailing list