如何只删除一个子项目的所有userdefaults数据?
How to delete all userdefaults data of only one subproject?
我的项目在主项目中有几个子项目。我只想删除一个子项目中的所有 userdefaults 数据。
我在 userdefaults 中搜索并找到了“套件”概念,但看起来该套件主要用于应用程序组。
由于我不需要在应用程序组之间共享数据,我不知道“套件”是否是最好的方式。
有没有其他好办法只删除一个子项目的userdefaults数据?
- 在我的子项目中,有20~30个userdefaults数据。
所以,我觉得把这些数据一个一个删掉很不方便
您可以使用枚举为您的子项目声明您的密钥,并通过 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()
}
}
我的项目在主项目中有几个子项目。我只想删除一个子项目中的所有 userdefaults 数据。 我在 userdefaults 中搜索并找到了“套件”概念,但看起来该套件主要用于应用程序组。 由于我不需要在应用程序组之间共享数据,我不知道“套件”是否是最好的方式。 有没有其他好办法只删除一个子项目的userdefaults数据?
- 在我的子项目中,有20~30个userdefaults数据。 所以,我觉得把这些数据一个一个删掉很不方便
您可以使用枚举为您的子项目声明您的密钥,并通过 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()
}
}