Bird
Raised Fist0
Swiftprogramming~20 mins

Enum declaration and cases in Swift - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Enum Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of enum with raw values
What is the output of this Swift code?
Swift
enum Direction: String {
    case north = "N"
    case south = "S"
    case east = "E"
    case west = "W"
}

let dir = Direction.east
print(dir.rawValue)
A"E"
B"east"
CDirection.east
D"East"
Attempts:
2 left
💡 Hint
Look at the rawValue property of the enum case.
❓ Predict Output
intermediate
2:00remaining
Enum with associated values output
What will this Swift code print?
Swift
enum Result {
    case success(Int)
    case failure(String)
}

let res = Result.failure("Error")
switch res {
case .success(let code):
    print("Success with code \(code)")
case .failure(let message):
    print("Failed: \(message)")
}
AFailed: failure
BFailed: Error
CSuccess with code 0
DSuccess with code Error
Attempts:
2 left
💡 Hint
Check which case is assigned to res and what the associated value is.
🔧 Debug
advanced
2:00remaining
Identify the error in enum declaration
Which option shows the error when compiling this enum declaration?
Swift
enum Color {
    case red
    case green
    case blue
    case yellow = 4
}
AError: Missing comma between cases
BNo error, compiles fine
CError: Enum cases cannot have assigned integer values without raw type
DError: Enum cases must be strings
Attempts:
2 left
💡 Hint
Check if enum has raw type when assigning values to cases.
🧠 Conceptual
advanced
2:00remaining
Number of cases in enum
Given this enum, how many cases does it have?
Swift
enum Weekday {
    case monday, tuesday, wednesday
    case thursday
    case friday, saturday, sunday
}
A7
B5
C6
D3
Attempts:
2 left
💡 Hint
Count all the cases separated by commas and lines.
❓ Predict Output
expert
3:00remaining
Output of enum with indirect recursive case
What does this Swift code print?
Swift
enum ArithmeticExpression {
    case number(Int)
    indirect case addition(ArithmeticExpression, ArithmeticExpression)
}

let five = ArithmeticExpression.number(5)
let four = ArithmeticExpression.number(4)
let sum = ArithmeticExpression.addition(five, four)

func evaluate(_ expr: ArithmeticExpression) -> Int {
    switch expr {
    case .number(let value):
        return value
    case .addition(let left, let right):
        return evaluate(left) + evaluate(right)
    }
}

print(evaluate(sum))
A0
B54
CError: indirect case not allowed
D9
Attempts:
2 left
💡 Hint
Think about how the recursive evaluation adds the numbers.

Practice

(1/5)
1. What is the purpose of an enum in Swift?
easy
A. To group related values under one name
B. To create a function
C. To declare a variable
D. To write a loop

Solution

  1. Step 1: Understand what enums represent

    Enums group related values together to make code clearer and safer.
  2. Step 2: Compare options with enum purpose

    Only To group related values under one name correctly describes grouping related values under one name.
  3. Final Answer:

    To group related values under one name -> Option A
  4. Quick Check:

    Enum purpose = Group related values [OK]
Hint: Enums group related values clearly and safely [OK]
Common Mistakes:
  • Confusing enums with functions
  • Thinking enums declare variables
  • Mixing enums with loops
2. Which of the following is the correct way to declare an enum named Direction with cases north, south, east, and west?
easy
A. enum Direction = { north, south, east, west }
B. enum Direction: north, south, east, west {}
C. enum Direction { case north, south, east, west }
D. enum Direction { north; south; east; west }

Solution

  1. Step 1: Recall Swift enum syntax

    Enums use the keyword enum, followed by the name and curly braces containing case declarations separated by commas.
  2. Step 2: Check each option's syntax

    enum Direction { case north, south, east, west } uses correct syntax: enum Direction { case north, south, east, west }. Others use invalid syntax.
  3. Final Answer:

    enum Direction { case north, south, east, west } -> Option C
  4. Quick Check:

    Correct enum syntax = enum Direction { case north, south, east, west } [OK]
Hint: Use 'case' keyword with comma-separated values inside braces [OK]
Common Mistakes:
  • Using '=' instead of braces
  • Omitting 'case' keyword
  • Separating cases with semicolons
3. What will be the output of this Swift code?
enum Light {
    case red, yellow, green
}

let current = Light.red
switch current {
case .red:
    print("Stop")
case .yellow:
    print("Caution")
case .green:
    print("Go")
}
medium
A. No output
B. Go
C. Caution
D. Stop

Solution

  1. Step 1: Identify the enum case assigned

    The variable current is assigned Light.red.
  2. Step 2: Match the switch case for current

    The switch matches .red and prints "Stop".
  3. Final Answer:

    Stop -> Option D
  4. Quick Check:

    Light.red triggers "Stop" output [OK]
Hint: Match enum case in switch to get output [OK]
Common Mistakes:
  • Confusing enum cases with strings
  • Forgetting dot prefix in switch
  • Assuming default output
4. Identify the error in this enum declaration:
enum Weather {
    case sunny
    case rainy
    case windy
    case
}
medium
A. Missing case name after 'case' keyword
B. Enum name is invalid
C. Curly braces are missing
D. Enum cases should be strings

Solution

  1. Step 1: Review each enum case line

    The last line has case without a case name, which is invalid syntax.
  2. Step 2: Confirm other parts are correct

    Enum name and braces are correct; cases do not need to be strings.
  3. Final Answer:

    Missing case name after 'case' keyword -> Option A
  4. Quick Check:

    Every 'case' must have a name [OK]
Hint: Each 'case' must have a name after it [OK]
Common Mistakes:
  • Leaving 'case' empty
  • Thinking cases need quotes
  • Missing braces around enum
5. You want to create an enum Planet with cases for mercury, venus, and earth. Then, write a function that returns a friendly message for each planet. Which code correctly implements this?
hard
A. enum Planet { mercury, venus, earth } func message(planet: Planet) -> String { if planet == mercury { return "Closest to the Sun" } else if planet == venus { return "Second planet" } else { return "Our home" } }
B. enum Planet { case mercury, venus, earth } func message(for planet: Planet) -> String { switch planet { case .mercury: return "Closest to the Sun" case .venus: return "Second planet" case .earth: return "Our home" } }
C. enum Planet { case mercury, venus, earth } func message(planet: Planet) -> String { if planet == mercury { return "Closest to the Sun" } else if planet == venus { return "Second planet" } else { return "Our home" } }
D. enum Planet { case mercury, venus, earth } func message(for planet: Planet) -> String { switch planet { case mercury: return "Closest to the Sun" case venus: return "Second planet" case earth: return "Our home" } }

Solution

  1. Step 1: Check enum declaration syntax

    Options A, C, and D declare enum correctly with case keyword; B misses it, so B is invalid.
  2. Step 2: Check function parameter and switch usage

    enum Planet { case mercury, venus, earth } func message(for planet: Planet) -> String { switch planet { case .mercury: return "Closest to the Sun" case .venus: return "Second planet" case .earth: return "Our home" } } uses switch with dot syntax for cases and correct function signature. enum Planet { case mercury, venus, earth } func message(planet: Planet) -> String { if planet == mercury { return "Closest to the Sun" } else if planet == venus { return "Second planet" } else { return "Our home" } } uses if-else without dot syntax (.mercury), causing compile error. enum Planet { case mercury, venus, earth } func message(for planet: Planet) -> String { switch planet { case mercury: return "Closest to the Sun" case venus: return "Second planet" case earth: return "Our home" } } misses dot prefix in switch cases, causing error.
  3. Final Answer:

    enum Planet { case mercury, venus, earth } func message(for planet: Planet) -> String { switch planet { case .mercury: return "Closest to the Sun" case .venus: return "Second planet" case .earth: return "Our home" } } -> Option B
  4. Quick Check:

    Enum with 'case' and switch with dot cases [OK]
Hint: Use 'case' keyword and dot prefix in switch cases [OK]
Common Mistakes:
  • Omitting 'case' keyword in enum
  • Missing dot prefix in switch cases
  • Using if without dot prefix for enum cases
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard