Bird
Raised Fist0
Swiftprogramming~20 mins

Nil coalescing operator deep usage in Swift - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Nil Coalescing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Nil Coalescing with Optional Chaining
What is the output of this Swift code snippet?
Swift
struct User {
    var name: String?
}

let user: User? = User(name: nil)
let displayName = user?.name ?? "Guest"
print(displayName)
Anil
B"Guest"
C"Optional(nil)"
DCompilation error
Attempts:
2 left
💡 Hint
Remember that optional chaining returns an optional, and nil coalescing provides a default value.
❓ Predict Output
intermediate
2:00remaining
Nested Nil Coalescing Operators
What will be printed by this Swift code?
Swift
let a: Int? = nil
let b: Int? = 5
let c: Int? = nil

let result = a ?? b ?? c ?? 10
print(result)
A5
Bnil
C10
DCompilation error
Attempts:
2 left
💡 Hint
The nil coalescing operator evaluates from left to right until it finds a non-nil value.
🔧 Debug
advanced
2:30remaining
Unexpected Behavior with Nil Coalescing and Function Calls
Consider this Swift code. What is the output and why?
Swift
func getValue() -> Int? {
    print("getValue called")
    return nil
}

let x: Int? = nil
let y = x ?? getValue() ?? 42
print(y)
AgetValue called\nnil
B42
CgetValue called\n42
DCompilation error
Attempts:
2 left
💡 Hint
Check when the function getValue() is called in the nil coalescing chain.
📝 Syntax
advanced
1:30remaining
Correct Usage of Nil Coalescing with Optional Binding
Which option correctly uses nil coalescing to assign a non-optional Int from an optional Int?
Alet value = optionalInt ?? 0
Blet value = optionalInt ? 0
Clet value = optionalInt || 0
Dlet value = optionalInt ?: 0
Attempts:
2 left
💡 Hint
The nil coalescing operator in Swift is ??
🚀 Application
expert
2:30remaining
Complex Nil Coalescing in Dictionary Lookup
Given this Swift code, what is the value of finalValue after execution?
Swift
let dict: [String: Int?] = ["a": 1, "b": nil]

let finalValue = dict["b"] ?? (10 as Int?)
print(finalValue ?? -1)
A-1
B10
C1
Dnil
Attempts:
2 left
💡 Hint
Remember the dictionary value is an optional Int optional, so dict["b"] returns Int??

Practice

(1/5)
1. What does the nil coalescing operator ?? do in Swift?
easy
A. It returns the value of an optional if it is not nil, otherwise returns a default value.
B. It forces unwraps an optional and crashes if nil.
C. It converts a non-optional value into an optional.
D. It checks if two optionals are equal.

Solution

  1. Step 1: Understand the purpose of the nil coalescing operator

    The operator ?? is used to provide a default value when an optional is nil.
  2. Step 2: Compare with other options

    Options A, C, and D describe different behaviors unrelated to ??.
  3. Final Answer:

    It returns the value of an optional if it is not nil, otherwise returns a default value. -> Option A
  4. Quick Check:

    Nil coalescing operator = default value fallback [OK]
Hint: Remember: ?? means "use this if nil" [OK]
Common Mistakes:
  • Confusing ?? with forced unwrapping (!)
  • Thinking ?? converts types
  • Assuming ?? compares optionals
2. Which of the following is the correct syntax to use the nil coalescing operator in Swift?
easy
A. let value = optionalValue ??? defaultValue
B. let value = optionalValue ?: defaultValue
C. let value = optionalValue ? defaultValue
D. let value = optionalValue ?? defaultValue

Solution

  1. Step 1: Recall the correct syntax for nil coalescing

    The correct syntax uses two question marks: ?? between the optional and the default value.
  2. Step 2: Eliminate incorrect options

    Options B, C, and D use invalid or incorrect operators.
  3. Final Answer:

    let value = optionalValue ?? defaultValue -> Option D
  4. Quick Check:

    Syntax for nil coalescing = ?? [OK]
Hint: Look for exactly two question marks ?? [OK]
Common Mistakes:
  • Using ?: which is from other languages
  • Using single ? instead of ??
  • Adding extra question marks ???
3. What is the output of the following Swift code?
let a: Int? = nil
let b: Int? = 5
let c: Int? = nil
let result = a ?? b ?? c ?? 10
print(result)
medium
A. 5
B. 10
C. nil
D. Compilation error

Solution

  1. Step 1: Evaluate the chained nil coalescing

    The expression a ?? b ?? c ?? 10 checks each optional from left to right and returns the first non-nil value.
  2. Step 2: Check each optional's value

    a is nil, so move to b which is 5 (non-nil), so the result is 5.
  3. Final Answer:

    5 -> Option A
  4. Quick Check:

    First non-nil value = 5 [OK]
Hint: Chain ?? to pick first non-nil value [OK]
Common Mistakes:
  • Assuming nil is returned if first is nil
  • Ignoring chaining order
  • Thinking default 10 is always returned
4. Identify the error in this Swift code using nil coalescing:
let x: Int? = nil
let y: Int = 3
let z = x ?? y ?? 5
print(z)
medium
A. x must be non-optional
B. No error, code runs fine
C. y must be optional to use ??
D. Cannot use ?? with non-optional y

Solution

  1. Step 1: Understand the types involved in nil coalescing

    The operator ?? requires the right side to be the same type as the optional or a non-optional fallback value.
  2. Step 2: Analyze the expression x ?? y ?? 5

    Here, x is Int?, y is Int, but y ?? 5 is invalid because y is not optional, so you cannot use ?? on it.
  3. Final Answer:

    Cannot use ?? with non-optional y -> Cannot use ?? with non-optional y
  4. Quick Check:

    Right side of ?? must be optional or value [OK]
Hint: Right side of ?? must be optional or value, not non-optional with ?? [OK]
Common Mistakes:
  • Using ?? on non-optional values
  • Confusing optional and non-optional types
  • Assuming ?? works like || operator
5. Given the following Swift code, what will be the value of finalValue?
func getValue() -> Int? { return nil }
let a: Int? = nil
let b: Int? = getValue()
let c: Int? = 7
let finalValue = a ?? b ?? c ?? 0
hard
A. nil
B. 0
C. 7
D. Compilation error

Solution

  1. Step 1: Evaluate each optional in the chain

    a is nil, b is nil (from getValue()), c is 7 (non-nil).
  2. Step 2: Apply nil coalescing operator

    The expression a ?? b ?? c ?? 0 returns the first non-nil value, which is 7.
  3. Final Answer:

    7 -> Option C
  4. Quick Check:

    First non-nil in chain = 7 [OK]
Hint: Chain ?? to find first non-nil, else default [OK]
Common Mistakes:
  • Assuming function return nil means error
  • Ignoring that c is non-nil
  • Thinking default 0 is returned always
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