Ios 每次调用.insert()或.remove(at:)时,都将更新集保存在UserDefaults中
我肯定这是一个愚蠢的问题,但我正在打电话,找不到任何类似的问题 我有一套:Ios 每次调用.insert()或.remove(at:)时,都将更新集保存在UserDefaults中,ios,swift,userdefaults,Ios,Swift,Userdefaults,我肯定这是一个愚蠢的问题,但我正在打电话,找不到任何类似的问题 我有一套: var mySet: Set<SomeObject> var mySet:Set 我需要在应用程序发布期间保持,大概是使用UserDefaults 如果每次修改时我都重新创建并将集合重新保存为UserDefaults,这样做还可以,但这似乎非常麻烦。是否有一种方法可以支持每次调用.insert()或.remove(at:)时更新UserDefaults值?您可以使用属性观察程序来实现此目的。这里有一个简单
var mySet: Set<SomeObject>
var mySet:Set
我需要在应用程序发布期间保持,大概是使用UserDefaults
如果每次修改时我都重新创建并将集合重新保存为UserDefaults,这样做还可以,但这似乎非常麻烦。是否有一种方法可以支持每次调用
.insert()
或.remove(at:)
时更新UserDefaults值?您可以使用属性观察程序来实现此目的。这里有一个简单的例子
一组整数(另存为数组)的示例:
Set
是一种值类型,因此每次修改(插入、,
删除,…)在变量和属性中存储新值
观察者被触发 添加一个属性观察者(
didSet
)怎么样?调用insert时,didSet是否启动?那会管用的。是的,我真傻!当我的
var mySet = Set(UserDefaults.standard.array(forKey: "mySet") as? [Int] ?? []) {
didSet {
// Save new value
UserDefaults.standard.set(Array(mySet), forKey: "mySet")
}
}