每次调用 .insert() 或 .remove(at:) 时,在 UserDefaults 中保存更新的 Set
Posted
技术标签:
【中文标题】每次调用 .insert() 或 .remove(at:) 时,在 UserDefaults 中保存更新的 Set【英文标题】:Save updated Set in UserDefaults every time .insert() or .remove(at:) are called 【发布时间】:2018-04-13 18:55:26 【问题描述】:我确定这是一个愚蠢的问题,但我正在打电话,找不到任何类似的问题。
我有一套:
var mySet: Set<SomeObject>
我需要在应用程序启动时坚持,大概使用 UserDefaults。
如果我每次修改 Set 时都重新创建并重新保存 Set to UserDefaults,这可以正常工作,但这看起来非常麻烦。有没有一种方法可以支持每次调用 .insert()
或 .remove(at:)
时更新 UserDefaults 值?
【问题讨论】:
添加一个属性观察者(didSet
)怎么样?
调用 insert 时是否会触发 didSet?那会奏效的。
是的……
傻我!当我的 ????电池已充电,我会试试看。
【参考方案1】:
您可以为此目的使用属性观察器。这是一个简单的 一组整数的示例(保存为数组):
var mySet = Set(UserDefaults.standard.array(forKey: "mySet") as? [Int] ?? [])
didSet
// Save new value
UserDefaults.standard.set(Array(mySet), forKey: "mySet")
Set
是一个值类型,因此每次修改(插入,
删除,...)在变量中存储一个新值,并且属性
观察者被触发。
【讨论】:
以上是关于每次调用 .insert() 或 .remove(at:) 时,在 UserDefaults 中保存更新的 Set的主要内容,如果未能解决你的问题,请参考以下文章
Python可迭代对象中的添加和删除(add,append,pop,remove,insert)
python的append insert extend pop del remove使用
append()/extend()/insert()/remove()/del/pop()/slice列表分片