【问题标题】:Save updated Set in UserDefaults every time .insert() or .remove(at:) are called每次调用 .insert() 或 .remove(at:) 时,在 UserDefaults 中保存更新的 Set
【发布时间】:2023-03-10 17:25:01
【问题描述】:

我确定这是一个愚蠢的问题,但我正在打电话,找不到任何类似的问题。

我有一套:

var mySet: Set<SomeObject>

我需要在应用程序启动时坚持,大概使用 UserDefaults。

如果我每次修改 Set 时都重新创建并重新保存 Set to UserDefaults,这可以正常工作,但这看起来非常麻烦。有没有一种方法可以支持每次调用 .insert().remove(at:) 时更新 UserDefaults 值?

【问题讨论】:

  • 添加一个属性观察者(didSet)怎么样?
  • 调用 insert 时是否会触发 didSet?那会奏效的。
  • 是的……
  • 傻我!当我的 ????电池已充电,我会试试看。

标签: ios swift userdefaults


【解决方案1】:

您可以为此目的使用属性观察器。这是一个简单的 一组整数的示例(保存为数组):

var mySet = Set(UserDefaults.standard.array(forKey: "mySet") as? [Int] ?? []) {
    didSet {
        // Save new value
        UserDefaults.standard.set(Array(mySet), forKey: "mySet")
    }
}

Set 是一个值类型,因此每次修改(插入, 删除,...)在变量中存储一个新值,并且属性 观察者被触发。

【讨论】:

    猜你喜欢
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多