我确定这是一个愚蠢的问题,但我正在打电话,找不到任何类似的问题 .
我有一套:
var mySet: Set<SomeObject>
我需要坚持应用程序启动,大概是使用UserDefaults .
如果每次修改时重新创建并重新保存Set to UserDefaults,这都可以正常工作,但这看起来非常麻烦 . 有没有一种方法可以支持每次调用 .insert() 或 .remove(at:) 时更新UserDefaults值?
.insert()
.remove(at:)
您可以使用属性观察器来实现此目的 . 这是一组整数的简单示例(保存为数组):
var mySet = Set(UserDefaults.standard.array(forKey: "mySet") as? [Int] ?? []) { didSet { // Save new value UserDefaults.standard.set(Array(mySet), forKey: "mySet") } }
Set 是一个值类型,因此每个修改(插入,删除,...)都会在变量中存储一个新值,并触发属性观察者 .
Set
1 回答
您可以使用属性观察器来实现此目的 . 这是一组整数的简单示例(保存为数组):
Set
是一个值类型,因此每个修改(插入,删除,...)都会在变量中存储一个新值,并触发属性观察者 .