Bird
0
0

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📝 Application Q15 of 15
iOS Swift - Local Data Persistence
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?
AUserDefaults.standard.set(true, forKey: "darkMode") let isDark = UserDefaults.standard.object(forKey: "darkMode") as? Bool ?? false
BUserDefaults.standard.set("true", forKey: "darkMode") let isDark = UserDefaults.standard.bool(forKey: "darkMode")
CUserDefaults.standard.set(true, forKey: "darkMode") let isDark = UserDefaults.standard.bool(forKey: "darkMode")
DUserDefaults.standard.set(true, forKey: "darkMode") let isDark = UserDefaults.standard.string(forKey: "darkMode") == "true"
Step-by-Step Solution
Solution:
  1. 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.
  2. Step 2: Read Boolean safely with default

    Using bool(forKey:) returns the saved value or false if none exists, matching the requirement.
  3. 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.
  4. Final Answer:

    UserDefaults.standard.set(true, forKey: "darkMode") let isDark = UserDefaults.standard.bool(forKey: "darkMode") -> Option C
  5. Quick Check:

    Save/read Bool with set and bool(forKey:) [OK]
Quick Trick: 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

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More iOS Swift Quizzes