我正在尝试使用UserDefaults来持久地保存布尔值。这是我的代码:
public static var isOffline = UserDefaults.standard.bool(forKey: "isOffline") {
didSet {
print("Saving isOffline flag which is now \(isOffline)")
UserDefaults.standard.set(isOffline, forKey: "isOffline")
UserDefaults.standard.synchronize()
}
}
为什么不起作用?这段代码有什么问题?
问题在于当我尝试从UserDefaults
中检索"isOffline"
键时,我总是得到一个false
。
我在行的.onChange方法中设置了isOffline(我正在使用Eureka作为创建表单的框架)。标志在应用程序的生命周期内保持正确的值,但当我关闭它时,该值可能以某种方式被删除。
synchronize()
- 只有在您特别需要系统立即保存用户默认值时(例如当您的应用程序即将终止时)才需要 - 请参见此问答。 - HamishisOffline
的?在哪里设置的? - Hamish