Swift version: 5.10
Consider an array of items containing some optionals, like this one:
let numbers: [Int?] = [1, nil, 3, nil, 5]
If you want to loop over all the items and print them out, you’d write something like this:
for number in numbers {
print(number)
}
However, that prints out all items in their current state: optionally wrapped integers for some, nil for others.
With a small change to that loop, you can have Swift unwrap all the optionals then only enter the loop for any that contain a value – any nil items are ignored. This is done using for case let syntax, like this:
for case let number? in numbers {
print(number)
}
That will print the numbers 1, 3, and 5.
SAVE 50% All our books and bundles are half price for Black Friday, so you can take your Swift knowledge further for less! Get my all-new book Everything but the Code to make more money with apps, get the Swift Power Pack to build your iOS career faster, get the Swift Platform Pack to builds apps for macOS, watchOS, and beyond, or get the Swift Plus Pack to learn Swift Testing, design patterns, and more.
Available from iOS – learn more in my book Pro Swift
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.