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