如何删除仅一个子项目的所有 userdefaults 数据?

Posted

技术标签:

【中文标题】如何删除仅一个子项目的所有 userdefaults 数据?【英文标题】:How to delete all userdefaults data of only one subproject? 【发布时间】:2019-02-07 04:49:37 【问题描述】:

我的项目在主项目中有几个子项目。我只想删除一个子项目中的所有 userdefaults 数据。 我在 userdefaults 中搜索并找到了“套件”概念,但看起来该套件主要用于应用程序组。 由于我不需要在应用程序组之间共享数据,我不知道“套件”是否是最好的方式。 有没有其他好方法可以只删除一个子项目的userdefaults数据?

在我的子项目中,有 20~30 个用户默认数据。 所以,我觉得把这些数据一一删除是不方便的。

【问题讨论】:

如果没有内置的分组支持,我会使用枚举将我的 userdefaults keps 分组在一起。 这将是一个好方法!谢谢:) 但是,在我的情况下,几乎键被设置为“不同的 ID”+“键名”。所以如果使用枚举会很棘手.. 【参考方案1】:

您可以使用枚举来为您的子项目声明您的密钥,并通过 caseiterable 协议符合它,并且在 for 循环中您可以删除它们。我在下面添加了示例

var unqKey = "some unique ID" //EDIT

enum SubProjectKeys  : String,CaseIterable

    case key1
    case key2
    case key3
    case key4

    var uniqueKey : String  //EDIT

            return  unqKey + self.rawValue
        






func removeKeysForSubProject() 

    let userDefaultsObj = UserDefaults()
    for key in SubProjectKeys.allCases 

        userDefaultsObj.removeObject(forKey:  key.uniqueKey) //EDIT
        userDefaultsObj.synchronize()
    

【讨论】:

是的,但我的钥匙并不简单。几乎所有的键都设置为 'unique id'+'key.rawValue'。所以我想知道这是最好的方法...... 嘿dueio这个唯一的ID是什么,你能详细说明一下吗?我正在编辑我的答案,以达到我理解你的问题的程度 好的,那么请查看上面的答案,您可以根据您的用户名在此处更改 unqKey 变量,并在保存数据的同时在删除时使用此枚举。还使该 uniquekey 全局常量,根据需要进行更改,希望对您有所帮助! 如果保存的键不大,枚举大小写会更好。但是,就我而言,例如,某些键组合在一起,例如“用户名”+ key.rawValue。 (如 user1+key1、user2+key1、user3+key1、user4+key1)...所以我认为使用“套件”概念比使用枚举更好。 我刚看到你新编辑的代码!是的,我可以这样使用:) 但是,我混淆了“套件”和“枚举”之间哪种方式更好。使用“套件”时代码更简单..

以上是关于如何删除仅一个子项目的所有 userdefaults 数据?的主要内容,如果未能解决你的问题,请参考以下文章

CMake:如何从子项目的所有静态库中创建一个共享库?

没有使用ROS顶层CMakelists.txt,如何给所有子项目的cmake默认值?

瓦拉。如何删除 GTK 容器的所有子项?

通过 INDEX 更新和删除 userDefaults 中的对象

如何在 Hudson 中删除不需要的构建工件

删除 UserDefault 中的套件