UserDefaults
1. Cơ bản
// Write
UserDefaults.standard.set("John", forKey: "username")
UserDefaults.standard.set(25, forKey: "age")
UserDefaults.standard.set(true, forKey: "isPremium")
// Read
let name = UserDefaults.standard.string(forKey: "username")
let age = UserDefaults.standard.integer(forKey: "age")
let isPremium = UserDefaults.standard.bool(forKey: "isPremium")2. @AppStorage
@AppStorage("username") var username = ""
@AppStorage("theme") var theme = "light"
// Trong View, tự động bind
TextField("Name", text: $username)3. Custom Objects
struct Settings: Codable {
var volume: Double = 0.5
var language: String = "en"
}
// Save
let settings = Settings()
if let data = try? JSONEncoder().encode(settings) {
UserDefaults.standard.set(data, forKey: "settings")
}
// Load
if let data = UserDefaults.standard.data(forKey: "settings"),
let settings = try? JSONDecoder().decode(Settings.self, from: data) {
// Use settings
}4. Keys Enum
enum UserDefaultsKeys: String {
case username
case email
case isLoggedIn
}
UserDefaults.standard.set("John", forKey: UserDefaultsKeys.username.rawValue)📝 Limits
- Không dùng cho data lớn
- Không encrypt (đừng lưu passwords)
- Synchronous (có thể block main thread)
Last updated on