What does the updateValue(_:forKey:) method do in a Swift dictionary?
It updates the value for the given key if it exists, or adds a new key-value pair if the key is not present. It returns the old value if it was replaced, or nil if the key was new.
Click to reveal answer
beginner
How can you safely access a value from a Swift dictionary with a default value if the key is missing?
Use the subscript with default value syntax: dict[key, default: defaultValue]. This returns the value for the key if it exists, or the default value otherwise.
Click to reveal answer
intermediate
What is the difference between dict[key] and dict[key, default: defaultValue] in Swift?
dict[key] returns an optional value that is nil if the key is missing. dict[key, default: defaultValue] returns a non-optional value, using the default if the key is missing.
Click to reveal answer
beginner
How does the removeValue(forKey:) method work in Swift dictionaries?
It removes the key-value pair for the given key if it exists and returns the removed value. If the key is not found, it returns nil.
Click to reveal answer
beginner
What happens when you assign a value to a dictionary key using subscript syntax in Swift?
If the key exists, the value is updated. If the key does not exist, a new key-value pair is added to the dictionary.
Click to reveal answer
What does dict.updateValue(10, forKey: "a") return if the key "a" was not in the dictionary?
A10
Bnil
CAn error
DThe old value for "a"
✗ Incorrect
It returns nil because there was no old value for the key "a" before the update.
How do you provide a default value when accessing a dictionary key in Swift?
Adict.defaultValue(forKey: key)
Bdict.get(key, defaultValue)
Cdict[key] ?? defaultValue
Ddict[key, default: defaultValue]
✗ Incorrect
The correct syntax is dict[key, default: defaultValue]. Option C is valid Swift syntax but uses optional coalescing, not dictionary default subscript.
What type does dict[key] return in Swift?
AOptional value
BAlways nil
CNon-optional value
DArray
✗ Incorrect
dict[key] returns an optional because the key might not exist in the dictionary.
Which method removes a key-value pair from a Swift dictionary?
Aremove(key:)
Bdelete(key:)
CremoveValue(forKey:)
Dpop(key:)
✗ Incorrect
The correct method to remove a key-value pair is removeValue(forKey:).
What happens if you assign a value to a new key in a Swift dictionary using subscript syntax?
AThe key-value pair is added
BThe dictionary throws an error
CNothing happens
DThe dictionary clears all entries
✗ Incorrect
Assigning a value to a new key adds that key-value pair to the dictionary.
Explain how to update a value in a Swift dictionary and how to handle the old value.
Think about the method that returns the previous value when you change a dictionary entry.
You got /3 concepts.
Describe how to access a dictionary value with a default fallback in Swift.
It's a special subscript syntax that avoids optionals.
You got /3 concepts.
Practice
(1/5)
1. What does the updateValue(_:forKey:) method do in a Swift dictionary?
easy
A. It updates the value for a given key and returns the old value if it existed.
B. It removes the key and its value from the dictionary.
C. It returns the value for a key or a default if the key is missing.
D. It creates a new dictionary with updated keys.
Solution
Step 1: Understand updateValue method purpose
The updateValue(_:forKey:) method changes the value for a specified key in the dictionary.
Step 2: Check return behavior
This method returns the old value if the key existed, otherwise nil.
Final Answer:
It updates the value for a given key and returns the old value if it existed. -> Option A
Quick Check:
updateValue returns old value or nil [OK]
Hint: Remember updateValue returns old value if key exists [OK]
Common Mistakes:
Confusing updateValue with removeValue
Thinking it returns the new value
Assuming it creates a new dictionary
2. Which of the following is the correct syntax to get a value from a dictionary with a default in Swift?
easy
A. let value = dict[key, default: 0]
B. let value = dict.get(key, default: 0)
C. let value = dict[key] ?? 0
D. let value = dict.value(forKey: key, default: 0)
Solution
Step 1: Recall Swift dictionary default value syntax
Swift dictionaries allow accessing values with a default using dict[key, default: defaultValue].
Step 2: Compare options
let value = dict[key, default: 0] matches the correct syntax. let value = dict[key] ?? 0 uses nil-coalescing but is not the dictionary default syntax.
Final Answer:
let value = dict[key, default: 0] -> Option A
Quick Check:
Use dict[key, default:] for default values [OK]
Hint: Use square brackets with default: for safe dictionary access [OK]
Common Mistakes:
Using get() method which doesn't exist
Confusing nil-coalescing with dictionary default syntax
Using value(forKey:) which is for NSObject
3. What is the output of this Swift code?
var scores = ["Alice": 10, "Bob": 8]
let oldValue = scores.updateValue(12, forKey: "Alice")
let missingValue = scores.updateValue(5, forKey: "Charlie")
print(oldValue, missingValue, scores)
medium
A. nil Optional(5) ["Alice": 12, "Bob": 8, "Charlie": 5]
B. 10 5 ["Alice": 12, "Bob": 8, "Charlie": 5]
C. Optional(10) nil ["Alice": 12, "Bob": 8, "Charlie": 5]
D. Optional(12) Optional(5) ["Alice": 10, "Bob": 8, "Charlie": 5]
Solution
Step 1: Understand updateValue return values
Updating "Alice" from 10 to 12 returns old value Optional(10). Adding "Charlie" returns nil because key was missing.
Step 2: Check dictionary after updates
Dictionary now has "Alice":12, "Bob":8, and "Charlie":5.
Hint: updateValue returns old value wrapped in Optional or nil if new key [OK]
Common Mistakes:
Expecting updateValue to return new value
Forgetting Optional wrapping
Not updating dictionary correctly
4. Identify the error in this Swift code snippet:
var dict = ["a": 1, "b": 2]
let removed = dict.removeValue(forKey: "c")
print(removed!)
medium
A. Dictionary keys must be integers, not strings.
B. Force unwrapping removed causes runtime crash if key missing.
C. removeValue(forKey:) does not exist for dictionaries.
D. print statement syntax is incorrect.
Solution
Step 1: Understand removeValue return type
removeValue(forKey:) returns an Optional value. If key is missing, it returns nil.
Step 2: Analyze force unwrapping
Force unwrapping removed! when key "c" is missing causes a runtime crash.
Final Answer:
Force unwrapping removed causes runtime crash if key missing. -> Option B
Quick Check:
Force unwrap nil causes crash [OK]
Hint: Avoid force unwrapping optional from removeValue without check [OK]
Common Mistakes:
Assuming removeValue always returns a value
Ignoring optional unwrapping
Thinking removeValue removes all keys
5. You have a dictionary var inventory = ["apple": 3, "banana": 5]. Write code to safely add 2 to the count of "orange", even if it doesn't exist yet, using dictionary default values. What is the correct way?
hard
A. inventory["orange"] = inventory["orange"]! + 2
B. inventory["orange"] = inventory["orange"] ?? 0 + 2
C. inventory.updateValue(inventory["orange"]! + 2, forKey: "orange")
D. inventory["orange"] = inventory["orange", default: 0] + 2
Solution
Step 1: Understand safe addition with default
Using inventory["orange", default: 0] returns 0 if "orange" key is missing.
Step 2: Increment value safely
Adding 2 to this default value and assigning back to inventory["orange"] updates or creates the key safely.
Final Answer:
inventory["orange"] = inventory["orange", default: 0] + 2 -> Option D
Quick Check:
dict[key] = dict[key, default: 0] + value for safe increments [OK]
Hint: Use dict[key] = dict[key, default: 0] + amount to add safely [OK]
Common Mistakes:
Force unwrapping missing keys causing crash
Using += on read-only default subscript
Using updateValue without checking for nil
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.