我的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
宏。虽然,这可能是更好的问题一个单独的问题。如果您对此有建议并且尚未对此进行回答,请添加评论,我会对其提出新的问题。
答案 0 :(得分:0)
你可以在课堂外为它创建一个常量。例如:
//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) }
}
}