📖 Scenario: You are creating a simple app that shows user profile information. Sometimes, the user might not provide their nickname. You want to display a default nickname when the user does not have one.
🎯 Goal: Build a Swift program that uses the nil coalescing operator ?? to provide a default nickname when the user's nickname is missing.
📋 What You'll Learn
Create an optional String variable called nickname with the value nil.
Create a constant String called defaultNickname with the value "Guest".
Use the nil coalescing operator ?? to create a constant displayName that uses nickname if it has a value, or defaultNickname if nickname is nil.
Print the value of displayName.
💡 Why This Matters
🌍 Real World
Apps often have optional data from users. The nil coalescing operator helps show default values so the app looks friendly and complete.
💼 Career
Understanding optionals and the nil coalescing operator is essential for Swift developers building safe and user-friendly iOS apps.
Progress0 / 4 steps
1
Create the optional nickname variable
Create an optional String variable called nickname and set it to nil.
Swift
Hint
Use var nickname: String? = nil to create an optional variable with no value.
2
Create the default nickname constant
Create a constant String called defaultNickname and set it to "Guest".
Swift
Hint
Use let defaultNickname = "Guest" to create a constant string.
3
Use the nil coalescing operator to set displayName
Use the nil coalescing operator ?? to create a constant called displayName that uses nickname if it has a value, or defaultNickname if nickname is nil.
Swift
Hint
Use let displayName = nickname ?? defaultNickname to assign the first non-nil value.
4
Print the displayName
Write a print statement to display the value of displayName.
Swift
Hint
Use print(displayName) to show the result.
Practice
(1/5)
1. What does the nil coalescing operator ?? do in Swift?
easy
A. It unwraps an optional without checking for nil.
B. It provides a default value if an optional is nil.
C. It converts a non-optional to an optional.
D. It forces a runtime error if the optional is nil.
Solution
Step 1: Understand optional values
Optionals may contain a value or nil (no value).
Step 2: Role of nil coalescing operator
The operator ?? returns the optional's value if it exists; otherwise, it returns the default value provided.
Final Answer:
It provides a default value if an optional is nil. -> Option B
Quick Check:
Nil coalescing = default value if nil [OK]
Hint: Remember: ?? means "use this if nil" [OK]
Common Mistakes:
Thinking ?? unwraps without nil check
Confusing ?? with forced unwrapping (!)
Assuming ?? converts types
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
Step 1: Recall the syntax of nil coalescing
The nil coalescing operator is written as ?? between an optional and a default value.
Step 2: Match correct syntax
let value = optionalValue ?? defaultValue uses ?? correctly: let value = optionalValue ?? defaultValue.
Final Answer:
let value = optionalValue ?? defaultValue -> Option D
Quick Check:
Correct syntax uses ?? [OK]
Hint: Look for double question marks ?? in syntax [OK]
Common Mistakes:
Using ?: which is from other languages
Using single ? without ??
Using !! which is invalid
3. What will be the output of the following Swift code?
var name: String? = nil
let displayName = name ?? "Guest"
print(displayName)
medium
A. Guest
B. Optional("Guest")
C. nil
D. Error: Cannot print optional
Solution
Step 1: Check the optional value
The variable name is nil.
Step 2: Apply nil coalescing operator
The expression name ?? "Guest" returns "Guest" because name is nil.
Final Answer:
Guest -> Option A
Quick Check:
nil ?? "Guest" = "Guest" [OK]
Hint: If optional is nil, ?? returns the default value [OK]
Common Mistakes:
Expecting nil to print
Thinking print shows Optional(...)
Confusing ?? with forced unwrap
4. Identify the error in this Swift code snippet using the nil coalescing operator:
let age: Int? = 25
let userAge = age ??
print(userAge)
medium
A. Optional variable cannot be used with ??
B. print statement syntax is incorrect
C. Missing default value after ?? operator
D. age should not be optional
Solution
Step 1: Check nil coalescing usage
The operator ?? must be followed by a default value to use if the optional is nil.
Step 2: Identify missing default value
In the code, age ?? is incomplete because no default value is provided after ??.
Final Answer:
Missing default value after ?? operator -> Option C
Quick Check:
?? needs a value after it [OK]
Hint: Always provide a value after ?? [OK]
Common Mistakes:
Leaving ?? without default value
Thinking optional can't be used with ??
Misplacing print statement
5. Given the dictionary let scores: [String: Int?] = ["Alice": 85, "Bob": nil], which expression correctly uses the nil coalescing operator to get Bob's score or 0 if nil?
hard
A. let bobScore = scores["Bob"] ?? nil ?? 0
B. let bobScore = scores["Bob"]! ?? 0
C. let bobScore = scores["Bob"] ?? Optional(0)
D. let bobScore = scores["Bob"] ?? 0
Solution
Step 1: Understand dictionary value type
The dictionary stores optional Int values: Int? inside the dictionary optional lookup, so scores["Bob"] returns Int??.
Step 2: Use nil coalescing correctly
Chaining scores["Bob"] ?? nil ?? 0 first flattens the double optional to Int? (returns inner value or nil), then applies ?? 0 to provide 0 if nil, yielding Int. For "Bob", some(nil) ?? nil = nil, then nil ?? 0 = 0.
Final Answer:
let bobScore = scores["Bob"] ?? nil ?? 0 -> Option A
Quick Check:
?? nil ?? 0 handles [Key: Opt<V>] [OK]
Hint: Chain ?? nil ?? 0 for dict of optionals [OK]
Common Mistakes:
Forcing unwrap before ?? causing crash
Direct ?? 0 causes type mismatch
Optional(0) doesn't handle inner nil
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.