0
0
Ios-swiftHow-ToBeginner ยท 3 min read

How to Use User Defaults in Swift for Simple Data Storage

Use UserDefaults.standard to save simple data like strings, numbers, or booleans by calling set(_:forKey:). Retrieve data with object(forKey:) or typed methods like string(forKey:). This stores data persistently across app launches.
๐Ÿ“

Syntax

UserDefaults is a simple key-value storage for small data. Use UserDefaults.standard to access the shared defaults object. Save data with set(_:forKey:) and read with object(forKey:) or typed getters like string(forKey:).

  • set(_: Any?, forKey: String): Saves a value for a key.
  • object(forKey: String) -> Any?: Retrieves a value for a key.
  • string(forKey: String) -> String?: Retrieves a string value.
  • bool(forKey: String) -> Bool: Retrieves a boolean value.
swift
let defaults = UserDefaults.standard

// Save a string
defaults.set("Hello", forKey: "greeting")

// Retrieve a string
let greeting = defaults.string(forKey: "greeting")
๐Ÿ’ป

Example

This example shows how to save a user's name and a flag indicating if they are logged in, then read and print these values.

swift
import Foundation

let defaults = UserDefaults.standard

// Save data
defaults.set("Alice", forKey: "username")
defaults.set(true, forKey: "isLoggedIn")

// Read data
if let username = defaults.string(forKey: "username") {
    let loggedIn = defaults.bool(forKey: "isLoggedIn")
    print("User: \(username), Logged In: \(loggedIn)")
} else {
    print("No user found")
}
Output
User: Alice, Logged In: true
โš ๏ธ

Common Pitfalls

Common mistakes include:

  • Forgetting to use the correct key when reading or writing data.
  • Assuming a value exists without checking for nil.
  • Storing large or sensitive data in UserDefaults (it's meant for small, simple data).
  • Not synchronizing data if needed (usually not required as UserDefaults auto-syncs).
swift
let defaults = UserDefaults.standard

// Wrong: reading with a different key
let name = defaults.string(forKey: "user_name") // returns nil if key is wrong

// Right: use the exact same key
defaults.set("Bob", forKey: "username")
let correctName = defaults.string(forKey: "username")
๐Ÿ“Š

Quick Reference

MethodDescription
set(_: Any?, forKey: String)Save a value for a key
string(forKey: String)Get a string value
bool(forKey: String)Get a boolean value
integer(forKey: String)Get an integer value
removeObject(forKey: String)Remove a value for a key
โœ…

Key Takeaways

Use UserDefaults.standard to save and retrieve small pieces of data by key.
Always use the exact same key to read and write values to avoid nil results.
Check for nil when reading optional values to avoid crashes.
UserDefaults is not for large or sensitive data; use it only for simple settings.
Data saved in UserDefaults persists across app launches automatically.