Iterating enum cases with CaseIterable in Swift - Time & Space Complexity
When we loop through all cases of an enum using CaseIterable, we want to know how the time needed grows as the number of cases increases.
We ask: How does the work change if the enum has more or fewer cases?
Analyze the time complexity of the following code snippet.
enum Direction: CaseIterable {
case north, south, east, west
}
for direction in Direction.allCases {
print(direction)
}
This code loops through all possible directions defined in the enum and prints each one.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Looping through each enum case in
Direction.allCases. - How many times: Once for each case in the enum.
As the number of enum cases grows, the loop runs once for each case.
| Input Size (n) | Approx. Operations |
|---|---|
| 4 | 4 (one print per case) |
| 10 | 10 |
| 100 | 100 |
Pattern observation: The work grows directly with the number of enum cases.
Time Complexity: O(n)
This means the time to run the loop grows in a straight line as the number of enum cases increases.
[X] Wrong: "Looping over enum cases is constant time because enums are fixed."
[OK] Correct: Even though enums have fixed cases, the loop still runs once per case, so time grows with the number of cases.
Understanding how looping over enum cases scales helps you explain your code's efficiency clearly and confidently in real-world coding discussions.
What if we nested another loop inside to print each case twice? How would the time complexity change?