ios - 每次 .insert() 或 .remove(at :) are called) 在 UserDefaults 中保存更新的 Set

标签 ios swift userdefaults

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

我有一套:

var mySet: Set<SomeObject>

我需要在应用程序启动时保持不变,大概是使用 UserDefaults。

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

最佳答案

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

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

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

关于ios - 每次 .insert() 或 .remove(at :) are called) 在 UserDefaults 中保存更新的 Set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49823528/

相关文章:

ios - 如何在集合类型约束中制作泛型?

php - 这个 iOS 应用程序是 Web 应用程序吗?

ios - performSegueWithIdentifier 未启动 Segue

swift - 如何更改 UserDefaults 中的值的类型?

ios - Devise with Facebook Omniauth - 如何使用 API 进行身份验证?

ios - 使用 PhotoLibrary 私有(private)框架设置 iOS 墙纸时裁剪/缩放不起作用

arrays - Swift4.2 如何将 "struct"构造的二维数组保存到UserDefaults中?

ios - swift 3 : Error in TableView when deleting cells holding UserDefault values

iOS - 当搜索半径太宽时,GeoFire 异常抛出 'Precision must be less than 23!'

ios - 如何修复 iPhone 后退按钮图像位置?