Swift Programming: getter/setter in stored property

前端 未结 5 2057
夕颜
夕颜 2020-12-28 11:35

How do I overwrite the setter of stored property in Swift?

In Obj-C, I can overwrite its setter, but Swift doesn\'t seem to be happy about getter/setters being used

5条回答
  •  盖世英雄少女心
    2020-12-28 12:11

    If you don't want to use didSet, which has the problem that the property's value is temporarily wrong, you should wrap a computed property around it.

    private var _foo:Int = 0
    var foo:Int {
        get {
            return _foo
        }
        set {
            if(newValue > 999) {
                _foo = 999
            } else {
                _foo = newValue
            }
        }
    }
    

    Or:

    private var _foo:Int = 0
    var foo:Int {
        get {
            return _foo
        }
        set {
            guard newValue <= 999 else {
                _foo = 999
                return
            }
            _foo = newValue
        }
    }
    

提交回复
热议问题