当我referred here,时,swift中没有@property或@synthesise指令。
然后,
1]如何通过编译器添加setter和getter?
2]如果我有一个对象,如何编写我们自己的setter和getter方法?
我是swift的新手。任何人都可以用例子解释吗?
//编辑:
在进行投票之前,请让我按照Apple documentation.
进行展示 @property (getter=isFinished) BOOL finished;
将覆盖getter方法。
以同样的方式我如何在Swift中实现?
在下面的示例中,如何将getter设为isFinished
class CarPaint : NSObject {
var finished:Bool = Bool();
func getCarDoorColor() -> UIColor {
if finished { //instead here I want to `isFinished`
return UIColor.whiteColor()
}
return UIColor.brownColor()
}
}
答案 0 :(得分:3)
您可以像这样更改Swift中属性的访问方式:
private var _someInt: Int = 0
var someInt: Int {
get {
return _someInt
}
set(newValue) {
_someInt = newValue
}
}
在这个例子中,我们使用私有变量来存储我们的值,并使用get / set闭包来访问该变量。因此,这不是非常有用,但在其他情况下它可能很有用,例如,如果您想要访问另一个对象的变量,就好像它是该属性的属性一样。
答案 1 :(得分:0)
回答问题的第二部分,到目前为止,Swift中没有任何名字的getter。
@property (getter=isFinished) BOOL finished;
Apple在其migration documentation
中建议使用Swift中的上述Objective-C等效代码var _finished:Bool = false // finished boolean variable.
var finished:Bool { //Getter(custom) and Setter for finished variable.
@objc(isFinished) get {
return self._finished
}
set(newValue){
_finished = newValue
}
}
只有办法解决getter self.isFinished()
func isFinished() -> Bool {
return _finished;
}
我希望你能得到解决方案。