Bird
Raised Fist0
Swiftprogramming~20 mins

Raw values for enums in Swift - Practice Problems & Coding Challenges

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

let dir = Direction.east
print(dir.rawValue)
ADirection.east
B"east"
C"E"
D"East"
Attempts:
2 left
💡 Hint
Check the raw value assigned to the case east.
❓ Predict Output
intermediate
2:00remaining
Raw value default assignment for Int enums
What will be printed by this Swift code?
Swift
enum Weekday: Int {
    case monday = 1
    case tuesday
    case wednesday
}

print(Weekday.tuesday.rawValue)
A3
B1
Ctuesday
D2
Attempts:
2 left
💡 Hint
Int raw values auto-increment from the first assigned value.
❓ Predict Output
advanced
2:30remaining
Using rawValue initializer with valid and invalid values
What is the output of this Swift code?
Swift
enum StatusCode: Int {
    case success = 200
    case notFound = 404
    case serverError = 500
}

if let status = StatusCode(rawValue: 404) {
    print("Found: \(status)")
} else {
    print("Not found")
}

if let status = StatusCode(rawValue: 201) {
    print("Found: \(status)")
} else {
    print("Not found")
}
A
Found: notFound
Not found
B
Found: notFound
Found: 201
C
Not found
Not found
D
Found: 404
Not found
Attempts:
2 left
💡 Hint
rawValue initializer returns nil if no matching case exists.
❓ Predict Output
advanced
3:00remaining
Raw values with mixed types in enum
What error or output does this Swift code produce?
Swift
enum MixedRaw: RawRepresentable {
    case intCase(Int)
    case stringCase(String)

    var rawValue: Any {
        switch self {
        case .intCase(let value): return value
        case .stringCase(let value): return value
        }
    }

    init?(rawValue: Any) {
        if let intValue = rawValue as? Int {
            self = .intCase(intValue)
        } else if let stringValue = rawValue as? String {
            self = .stringCase(stringValue)
        } else {
            return nil
        }
    }
}

let a = MixedRaw(rawValue: 10)
print(a?.rawValue ?? "nil")
Anil
BCompile-time error: enums cannot have associated values and raw values
C10
DRuntime error
Attempts:
2 left
💡 Hint
Swift enums with associated values cannot have raw values.
🧠 Conceptual
expert
2:30remaining
Raw value uniqueness enforcement
What happens if you define a Swift enum with duplicate raw values like this?
Swift
enum Color: String {
    case red = "R"
    case green = "G"
    case blue = "R"
}
ACompile-time error due to duplicate raw values
BCompiles successfully, last case overwrites previous raw value
CRuntime error when accessing rawValue
DCompiles but rawValue of blue is nil
Attempts:
2 left
💡 Hint
Raw values must be unique in Swift enums.

Practice

(1/5)
1. What is the purpose of raw values in Swift enums?
easy
A. To allow enums to inherit from classes
B. To assign fixed simple values like strings or numbers to enum cases
C. To make enums mutable after declaration
D. To create functions inside enums

Solution

  1. Step 1: Understand what raw values are

    Raw values are fixed values assigned to enum cases, like strings or numbers.
  2. Step 2: Identify the purpose of raw values

    They help convert enum cases to simple data types for saving or displaying.
  3. Final Answer:

    To assign fixed simple values like strings or numbers to enum cases -> Option B
  4. Quick Check:

    Raw values = fixed simple values [OK]
Hint: Raw values give enums fixed simple data like strings or numbers [OK]
Common Mistakes:
  • Thinking raw values make enums mutable
  • Confusing raw values with associated values
  • Believing enums can inherit from classes
2. Which of the following is the correct syntax to declare an enum with raw values in Swift?
easy
A. enum Direction: Int { case north; case south }
B. enum Direction { case north = "N" case south = "S" }
C. enum Direction: String { case north = "N" case south = "S" }
D. enum Direction: String { north = "N", south = "S" }

Solution

  1. Step 1: Check enum declaration with raw values

    Raw values require specifying the type after enum name, e.g., : String.
  2. Step 2: Verify correct case syntax

    Cases use 'case name = value' syntax, separated by new lines or semicolons.
  3. Final Answer:

    enum Direction: String { case north = "N" case south = "S" } -> Option C
  4. Quick Check:

    Raw value enum syntax = enum Direction: String { case north = "N" case south = "S" } [OK]
Hint: Raw value enums need type after name and '=' for values [OK]
Common Mistakes:
  • Omitting the raw value type after enum name
  • Using commas instead of separate case lines
  • Assigning raw values without specifying type
3. What will be the output of this Swift code?
enum Weekday: Int {
    case monday = 1
    case tuesday
    case wednesday
}
print(Weekday.tuesday.rawValue)
medium
A. 1
B. Error: rawValue not found
C. 3
D. 2

Solution

  1. Step 1: Understand raw value auto-increment

    When the first case has a raw value (1), following cases auto-increment by 1.
  2. Step 2: Identify raw value of 'tuesday'

    Since monday = 1, tuesday = 2, wednesday = 3.
  3. Final Answer:

    2 -> Option D
  4. Quick Check:

    Auto-increment raw values = 2 [OK]
Hint: Raw Int values auto-increment from first assigned value [OK]
Common Mistakes:
  • Assuming all raw values must be explicitly assigned
  • Confusing rawValue with case index
  • Expecting an error when accessing rawValue
4. Identify the error in this enum declaration:
enum Color: String {
    case red = 1
    case green = "Green"
    case blue = "Blue"
}
medium
A. Raw values must all be of the declared type String
B. Enum cases cannot have raw values
C. Raw values must be integers only
D. Missing semicolon after each case

Solution

  1. Step 1: Check raw value type consistency

    The enum declares raw type String, so all raw values must be strings.
  2. Step 2: Identify the incorrect raw value

    Case 'red' has raw value 1 (an Int), which conflicts with String type.
  3. Final Answer:

    Raw values must all be of the declared type String -> Option A
  4. Quick Check:

    Raw values must match enum type [OK]
Hint: All raw values must match enum's declared raw type [OK]
Common Mistakes:
  • Mixing raw value types in one enum
  • Thinking semicolons are required after cases
  • Believing enums can't have raw values
5. Given this enum:
enum StatusCode: Int {
    case success = 200
    case notFound = 404
    case serverError = 500
}

func message(for code: Int) -> String {
    if let status = StatusCode(rawValue: code) {
        switch status {
        case .success: return "OK"
        case .notFound: return "Not Found"
        case .serverError: return "Server Error"
        }
    } else {
        return "Unknown"
    }
}

print(message(for: 404))
print(message(for: 201))
What is the output?
hard
A. Not Found Unknown
B. OK Unknown
C. Not Found Server Error
D. Error at runtime

Solution

  1. Step 1: Understand rawValue initializer

    StatusCode(rawValue: 404) returns .notFound; 201 returns nil.
  2. Step 2: Trace function output for each input

    For 404, returns "Not Found"; for 201, returns "Unknown".
  3. Final Answer:

    Not Found Unknown -> Option A
  4. Quick Check:

    Raw value init maps code to enum or nil [OK]
Hint: Raw value init returns nil if no matching case [OK]
Common Mistakes:
  • Assuming rawValue init always returns a case
  • Confusing rawValue with case index
  • Expecting runtime error for unknown raw value
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