我的Swift 3代码中有几个类似的属性:
var dinActive: Bool {
get { return UserDefaults.standard.bool (forKey: "bo", fallback: true) }
set { UserDefaults.standard.set (newValue, forKey: "bo") }
}
var spdif1Active: Bool {
get { return UserDefaults.standard.bool (forKey: "spdif1", fallback: true) }
set { UserDefaults.standard.set (newValue, forKey: "spdif1") }
}我想知道我能不能让这个更紧凑。例如,我避免在getter和setter函数中重复字符串文字,比如let s = "bo"。这在某种程度上有可能吗?
另外,我想知道我是否可以将这种重复的模式变成更短的代码,就像我可以用类和泛型,或者用C中的#define宏那样,也许最好用单独的问题来问。如果你对此有一个建议,但它还没有得到答复,只需添加一个评论,我将对它提出一个新的问题。
发布于 2017-06-02 11:08:44
您可以在类之外为其创建let常量。例如:
//declaring constant outside of class
let SPDif1Key: String = "spdif1"
class YourClass
{
var dinActive: Bool {
get { return UserDefaults.standard.bool (forKey: SPDif1Key, fallback: true) }
set { UserDefaults.standard.set (newValue, forKey: SPDif1Key) }
}
}https://stackoverflow.com/questions/44327273
复制相似问题