首页 > 解决方案 > 使用 UserDefault 自定义套件作为命名空间键

问题描述

我知道在 iOS(不是 macos)中为 UserDefaults 使用自定义套件的典型用例是将数据共享到应用程序扩展。

我想知道使用自定义套件是否有意义

class UserData {

    private var source = UserDefaults(suiteName: "MyApp.userData")!

    ...
}

更好地将与应用程序模块相关的键值与另一个模块隔离(或稍微更好的“命名空间”)。在这个简单的例子中,我想存储一些与用户相关的数据(不值得插入常规数据库)并在用户注销时清除它们。

使用standardUserDefaults 需要我在密钥前面加上前缀,或者包装所有调用,或者类似的方法,但我觉得使用套件更合适(双关语无意),因为我可以直接删除它或迭代覆盖它(出于某种原因),而不必担心触摸其他键或最糟糕的覆盖现有键(键冲突)。

TLDR:使用一套以上的小数据持久性来代替单一的 UserDefault 是否可以?可能会面临哪些缺点,我还没有找到一篇文章(不涉及扩展数据共享),而且像往常一样,Apple 文档几乎很清楚,如果不是误导的话。

奖励: 最初我虽然这也会排除所有那些系统注入的密钥,但在测试后显示它们也被复制到了 UserDefaults 的套件实例中,尽​​管我没有“添加”套件作为standard一,你对此有解释吗?

标签: iosswiftfoundationuserdefaults

解决方案


推荐阅读