我在 ViewControllerSettings 中定義了我的用戶默認值,
public let kAlertsKey = "ALERTS_KEY"
并通過開關和ìf帶有以下代碼的陳述句進行了修改
if switchAlerts.isOn{
UserDefaults.standard.removeObject(forKey: kAlertsKey)
UserDefaults.standard.set("On", forKey: kAlertsKey)
UserDefaults.standard.synchronize()
print("on")
}else{
UserDefaults.standard.removeObject(forKey: kAlertsKey)
UserDefaults.standard.set("Off", forKey: kAlertsKey)
UserDefaults.standard.synchronize()
print("off")
}
我的愿望是分享狀態On或Off6 個不同的 ViewController:
- 視圖控制器GUI
- 視圖控制器創建
- 視圖控制器串列
- ...
我的想法是創建一個列舉,例如:
enum ToggleSwitch: Int{
case On, Off
var isActive: Bool{
switch self {
case .On:
return true
case .Off:
return false
}
}
}
但是我不確定在列舉案例中如何遵循或需要回傳什么以及在每個 ViewController 中在哪里呼叫它。
提前致謝!
uj5u.com熱心網友回復:
我會添加一個簡單的擴展UserDefaults:
extension UserDefaults {
var isAlertsEnabled: Bool {
get {
return bool(forKey: "ALERT_KEY")
}
set {
set(newValue, forKey: "ALERT_KEY")
}
}
}
請注意使用實際Bool值而不是使用特殊字串值。另請注意,在設定新值之前無需洗掉舊值。
您可以在專案中的任何位置使用該屬性。
例如:
let enabled = UserDefaults.standard.isAlertsEnabled
或者:
UserDefaults.standard.isAlertsEnabled = switchAlerts.isOn
僅供參考 -synchronize()明確標記為已過時,不應使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/532669.html
