作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上我有一个 DataManager 单例,如下所示:
class DataManager {
static let shared = DataManager()
private init() {}
static func set(_ object: String, forKey defaultName: String) {
let defaults: UserDefaults = UserDefaults.standard
defaults.set(object, forKey:defaultName)
defaults.synchronize()
}
static func object(forKey key: String) -> String {
let defaults: UserDefaults = UserDefaults.standard
return defaults.object(forKey: key) as! String
}
}
在设置或检索保存的对象时,我想按如下方式实现:
DataManager.set("some hash", forKey: .hash)
代替:
DataManager.set("some hash", forKey: "hash")
此外,我正在寻找的功能的技术术语是什么?
最佳答案
你可以有一个枚举,简单的 DefaultKey
enum DefaultKey: String {
case hash = "hash"
case secondKey = "secondKey"
case thirdKey = "thirdKey"
}
现在你要做的是
static func set(_ object: String, forKey keyType: DefaultKey) {
let defaults: UserDefaults = UserDefaults.standard
let key = keyType.rawValue // rawvalue for keyType .hash will actually return you "hash".
defaults.set(object, forKey: key)
defaults.synchronize()
}
现在你可以像这样调用函数了
DataManager.set("some hash", forKey: .hash)
关于ios - 在类中使用枚举作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47031978/
我是一名优秀的程序员,十分优秀!