Ghostboard pixel

Swift: The Nil Coalescing Operator

Swift: The Nil Coalescing Operator

The so-called Nil Coalescing Operator is an interesting operator, that you can use for working with optionals.

Hint: This post has been updated to Swift 3

An Example

So imagine the following situation: You have an optional value  anOptionalInt and you want to assign the value to a non-optional value. If the optional is nil, you want to assign a default value. You can solve this problem as follows:

var anOptionalInt: Int? = 10

var anInt: Int = 0

if anOptionalInt != nil {
    anInt = anOptionalInt!
}

On the one hand this code is very long for the task, but it’s also very clear what’s going on. However, there are shorter solutions.

Ternary Conditional Operator

As in C, Swift has a so-called ternary conditional operator. There are a lot of discussions whether it’s a good idea or a bad idea to use it. I think in most cases it’s not a good idea because the code becomes very difficult to read. Let’s take a look at using the ternary conditional operator in our example:

var anOptionalInt: Int? = 10

var anotherOptional = (anOptionalInt != nil ? anOptionalInt! : 0)

This is of course much shorter. However, I have to read it at least twice to understand what’s going on. So I wouldn’t choose this approach.

Nil Coalescing Operator

For our example, there is a designated operator in Swift, the so-called nil coalescing operator. Let’s see how it works:

var anOptionalInt: Int? = 10

var anotherOptional = anOptionalInt ?? 0

The code is both very short and easy to read. When I’ve first heard about this operator, I wasn’t sure whether it’s a good idea to use it or not because I don’t like this kind of operators. But in this case I think this operator if definitely very useful, so I will give it a try.

What do you think? Is it a good idea to use the nil coalescing operator? Please provide your comment down below!

Resources

Title Image: @ TheUmf / shutterstock.com