removeObject(forKey:) deletes the value for the given key.
What does UserDefaults.standard.string(forKey: "name") return if "name" does not exist?
A"" (empty string)
B0
CThrows an error
Dnil
✗ Incorrect
It returns nil if the key does not exist.
Why should UserDefaults not be used for storing large data?
AIt is designed for small, simple data and large data can slow down the app.
BIt cannot store any data larger than 1 KB.
CIt deletes large data automatically.
DIt encrypts large data which is slow.
✗ Incorrect
UserDefaults is optimized for small pieces of data like settings, not large files.
Explain how to save and retrieve a user's preferred theme (dark or light) using UserDefaults in Swift.
Think about storing true or false for dark mode preference.
You got /4 concepts.
Describe the types of data suitable for UserDefaults and why it is not recommended for storing large files.
Consider what UserDefaults is designed for and what it is not.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of UserDefaults in an iOS app?
easy
A. To store small pieces of data that persist between app launches
B. To create complex database structures
C. To handle network requests
D. To design the app's user interface
Solution
Step 1: Understand UserDefaults role
UserDefaults is designed to save simple data like settings or preferences that stay saved even after the app closes.
Step 2: Compare options
Options B, C, and D describe other app functions unrelated to UserDefaults.
Final Answer:
To store small pieces of data that persist between app launches -> Option A
Quick Check:
UserDefaults = persistent small data storage [OK]
Hint: Remember UserDefaults saves simple data persistently [OK]
Common Mistakes:
Thinking UserDefaults is for large databases
Confusing UserDefaults with UI design
Assuming UserDefaults handles networking
2. Which of the following is the correct syntax to save a Boolean value true for the key "isLoggedIn" using UserDefaults?
easy
A. UserDefaults.standard.save(true, "isLoggedIn")
B. UserDefaults.set(true, key: "isLoggedIn")
C. UserDefaults.standard.store(true, forKey: "isLoggedIn")
D. UserDefaults.standard.set(true, forKey: "isLoggedIn")
Solution
Step 1: Recall UserDefaults saving syntax
The correct method to save a value is set(_:forKey:) called on UserDefaults.standard.
Step 2: Match syntax with options
Only UserDefaults.standard.set(true, forKey: "isLoggedIn") uses the correct method and parameters.
Final Answer:
UserDefaults.standard.set(true, forKey: "isLoggedIn") -> Option D
Quick Check:
Save bool = set(_:forKey:) [OK]
Hint: Use UserDefaults.standard.set(value, forKey: key) to save [OK]
Common Mistakes:
Omitting .standard before set
Using wrong method names like save or store
Swapping parameter labels
3. What will be the output of this Swift code snippet?
let defaults = UserDefaults.standard
defaults.set(42, forKey: "score")
let savedScore = defaults.integer(forKey: "score")
print(savedScore)
medium
A. 42
B. Optional(42)
C. nil
D. 0
Solution
Step 1: Understand saving and reading integer
The code saves integer 42 under key "score" and then reads it back using integer(forKey:).
Step 2: Know integer(forKey:) behavior
This method returns the stored integer value or 0 if none exists. Since 42 was saved, it returns 42.
Final Answer:
42 -> Option A
Quick Check:
integer(forKey:) returns saved int or 0 [OK]
Hint: integer(forKey:) returns Int, not Optional [OK]
Common Mistakes:
Expecting Optional(42) instead of 42
Confusing integer(forKey:) with object(forKey:)
Thinking it returns nil if key missing
4. Identify the error in this code snippet that tries to save a string to UserDefaults:
let defaults = UserDefaults.standard
defaults.set("John", forKey: "username")
let name = defaults.string(forKey: "user_name")
print(name ?? "No name")
medium
A. The print statement syntax is incorrect
B. The key used to save and read the string is different
C. The set method is missing .standard
D. UserDefaults cannot save strings
Solution
Step 1: Compare keys used for saving and reading
The string is saved with key "username" but read with key "user_name" which are different.
Step 2: Understand impact of key mismatch
Because keys differ, reading returns nil and prints "No name" instead of "John".
Final Answer:
The key used to save and read the string is different -> Option B
Quick Check:
Matching keys needed for save/read [OK]
Hint: Check keys match exactly when saving and reading [OK]
Common Mistakes:
Assuming UserDefaults can't save strings
Forgetting .standard before set
Misreading print statement syntax
5. You want to save a user's preferred theme setting as a Boolean in UserDefaults and then read it safely with a default of false if not set. Which code snippet correctly does this?
hard
A. UserDefaults.standard.set(true, forKey: "darkMode")
let isDark = UserDefaults.standard.object(forKey: "darkMode") as? Bool ?? false
B. UserDefaults.standard.set("true", forKey: "darkMode")
let isDark = UserDefaults.standard.bool(forKey: "darkMode")
C. UserDefaults.standard.set(true, forKey: "darkMode")
let isDark = UserDefaults.standard.bool(forKey: "darkMode")
D. UserDefaults.standard.set(true, forKey: "darkMode")
let isDark = UserDefaults.standard.string(forKey: "darkMode") == "true"
Solution
Step 1: Save Boolean correctly
UserDefaults.standard.set(true, forKey: "darkMode")
let isDark = UserDefaults.standard.bool(forKey: "darkMode") saves a Boolean true directly using set(_:forKey:) with a Bool value.
Step 2: Read Boolean safely with default
Using bool(forKey:) returns the saved value or false if none exists, matching the requirement.
Step 3: Analyze other options
UserDefaults.standard.set("true", forKey: "darkMode")
let isDark = UserDefaults.standard.bool(forKey: "darkMode") saves a String "true" which is incorrect for bool reading. UserDefaults.standard.set(true, forKey: "darkMode")
let isDark = UserDefaults.standard.object(forKey: "darkMode") as? Bool ?? false uses object casting which fails because NSNumber(true) as? Bool returns nil, so ?? false gives false even when set to true. UserDefaults.standard.set(true, forKey: "darkMode")
let isDark = UserDefaults.standard.string(forKey: "darkMode") == "true" reads as String and compares, but string(forKey:) returns nil for NSNumber causing false.
Final Answer:
UserDefaults.standard.set(true, forKey: "darkMode")
let isDark = UserDefaults.standard.bool(forKey: "darkMode") -> Option C
Quick Check:
Save/read Bool with set and bool(forKey:) [OK]
Hint: Use bool(forKey:) to read Bool with default false [OK]
Common Mistakes:
Saving Bool as String and reading as Bool
Using object(forKey:) cast instead of bool(forKey:)
Reading Bool as String and comparing
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.