无论如何要在getter中返回自己的属性并将自己设置在setter上?因为我只想在getter和setter中打印一个日志,就好了。
例如,我尝试做这样的事情:
private(set) var internetConnectionAvailable: Bool {
get {
logger.debug("verifying internet connection")
// here return itself property
}
set {
logger.debug("changing internet connection")
// here set itself
}
}
如果我在getter上返回self.internetConnectionAvailable
:
链接器命令失败,退出代码为1
当我尝试编译项目时。
我正在尝试这样做,因为我不想创建额外的私有属性来存储get和set。我正在寻找是否有不同的东西来实现这一点。
答案 0 :(得分:5)
编辑:我注意到您说您不想创建额外的私有财产。对不起不是。除非你将它设为NSManagedObject
子类(并挂钩到willAccessValueForKey
系统),否则挂钩到NSObject
上的ObjC运行时(例如,你可以调整自己的getter)添加日志记录;不要笑,我之前已经这样做了)。但是所有这些方法在Swift中都是疯狂的(在ObjC中是疯狂的;我只用它们进行调试)。只需制作支持变量。
如果您只想记录setter,那么这很简单:使用willSet
而不是set
。但是记录getter需要手动实现。你可以使用私有支持变量。
private var _internetConnectionAvailable: Bool
private(set) var internetConnectionAvailable: {
get {
logger.debug("verifying internet connection")
return _internetConnectionAvailable
}
set {
logger.debug("changing internet connection")
_internetConnectionAvailable = newValue
}
}
自己定义get
后,您已经说过您不想要默认处理,这意味着您没有自动支持变量。
答案 1 :(得分:0)
这是没有支持属性的有效Swift:
private(set) var internetConnectionAvailable: Bool {
get {
print("verifying internet connection")
// here return itself property
return false
}
set {
print("changing internet connection")
// here set itself
}
}
只需指定一个类型,然后从false
返回get
。