UserDefaults 和 AppStorage 混用时,默认值不统一的问题。因为AppStorage持久化时机不确定,UserDefaults先调用时可能获取的值仍是系统默认值。
解决方案有两种:
1. UserDefaults.standard.object(forKey:) == nil 判断。
| 12
 3
 
 | if UserDefaults.standard.object(forKey: "hasHapticFeedback") == nil {UserDefaults.standard.set(true, forKey: "hasHapticFeedback")
 }
 
 | 
| 12
 3
 4
 5
 
 | extension DefaultsKeys {var userColorScheme: DefaultsKey<String> { .init("userColorScheme", defaultValue: "default") }
 var userThemeName: DefaultsKey<String?> { .init("userThemeName") }
 var userLastLoginDate: DefaultsKey<Date?> { .init("userLastLoginDate") }
 }
 
 |