Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 每次调用.insert()或.remove(at:)时,都将更新集保存在UserDefaults中_Ios_Swift_Userdefaults - Fatal编程技术网

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")
    }
}