【发布时间】:2017-05-09 04:38:04
【问题描述】:
我正在尝试使用 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 作为框架来创建表单)。该标志在应用程序的生命周期内保持正确的值,但是当我关闭它时,该值可能会以某种方式被删除。
【问题讨论】:
-
您的代码在什么方面不起作用?请告诉我们minimal reproducible example。
-
另请注意,您无需在每次更改用户默认值时都调用
synchronize()——仅当您特别需要系统保存用户时立即默认(例如,当您的应用程序即将终止时) - 请参阅this Q&A。 -
是的,你是对的。但是现在的问题是“isOffline”标志总是返回false
-
你在哪里设置
isOffline? -
@Hamish 我添加了更多细节
标签: ios swift save nsuserdefaults